多くのプロジェクトが次のような構造になっていることに気づきました。
現在、次の規則を使用しています(私のプロジェクトは100%Javaです)。
私は現在Mavenを使用していませんが、これがMavenの慣習かどうか、または別の理由があるかどうか疑問に思っています。誰かが最初のバージョンが最近とても人気がある理由と、この新しい規則を採用するべきかどうかを説明できますか?
クリス
主な利点は、test
と同じディレクトリ構造を持つsrc
のサブディレクトリとしてmain
ディレクトリを持つことです。
RootLevelPackageClass
のすべてのパッケージプライベートメソッドが表示されます。つまり、TestRootLevelPackageClass
からテストできます。テストコードもソースなので、その場所はsrc
ディレクトリの下にあるはずです。
はい、これはMavenの規則です。
プロジェクトが100%Java(Maven btwで一般的であるように)であっても、リソースファイル(src/main/resources
(Mavenの慣習に従って)、またはWebアプリのもの、または...これらすべてがMavenシステムに簡単に適合します。
現在のビルドシステムに満足している場合は(それが何であれ)、Mavenに切り替える必要はありません。それ以外の場合、または新しいプロジェクトを開始する場合は、Mavenなどのオプションを評価できます。
他の人はすでにそれがMavenの慣習だと言っていますが、代わりにあなたの質問に答えます:
まったくありません。確かに、コードの一部を分離してルートフォルダを分離することは有益ですが、通常は
代わりに。実際、Mavenが実際に行っていることは、これが非常に大きなことです間違った:テキストコンテンツのみを対象とするソースコードリポジトリにバイナリコンテンツを追加したい!すべてのバイナリコンテンツは、ソースコードリポジトリの外部で管理する必要があります。これには、Webアプリケーションの画像などが含まれます。
しかし、OK、やや臭いMavenエコシステムに住むことにしたとしましょう。もちろん、可能な限り厳密にMavenの規則に従う必要があります。
そのMavenの慣習。
Mavenは Convention over configuration パラダイムに基づいています。つまり、この規則に従わない場合は、ソースの場所を設定する必要があります。それが私見の主な利点です。
はい、これはMavenの慣例ですが、Mavenを使用していない場合でも、それを使用する利点があります。
切り替えるためだけに切り替える必要があるとは言いませんが、新しいプロジェクトを開始するときに、コードを分割する方法について哲学的に同意しない限り、実際に使用しない理由はありません。