web-dev-qa-db-ja.com

「src / main / Java」規約の利点は何ですか?

多くのプロジェクトが次のような構造になっていることに気づきました。

  • Project-A
    • 置き場
    • lib
    • src
      • メイン
        • Java
          • RootLevelPackageClass.Java

現在、次の規則を使用しています(私のプロジェクトは100%Javaです)。

  • Project-A
    • 置き場
    • lib
    • src
      • RootLevelPackageClass.Java

私は現在Mavenを使用していませんが、これがMavenの慣習かどうか、または別の理由があるかどうか疑問に思っています。誰かが最初のバージョンが最近とても人気がある理由と、この新しい規則を採用するべきかどうかを説明できますか?

クリス

52
Chris

主な利点は、testと同じディレクトリ構造を持つsrcのサブディレクトリとしてmainディレクトリを持つことです。

  • Project-A
    • 置き場
    • lib
    • src
      • メイン
        • Java
          • RootLevelPackageClass.Java
        • 資源
      • テスト
        • Java
          • TestRootLevelPackageClass.Java
        • 資源

RootLevelPackageClassのすべてのパッケージプライベートメソッドが表示されます。つまり、TestRootLevelPackageClassからテストできます。テストコードもソースなので、その場所はsrcディレクトリの下にあるはずです。

54
Boris Pavlović

はい、これはMavenの規則です。

プロジェクトが100%Java(Maven btwで一般的であるように)であっても、リソースファイル(src/main/resources(Mavenの慣習に従って)、またはWebアプリのもの、または...これらすべてがMavenシステムに簡単に適合します。

現在のビルドシステムに満足している場合は(それが何であれ)、Mavenに切り替える必要はありません。それ以外の場合、または新しいプロジェクトを開始する場合は、Mavenなどのオプションを評価できます。

23
Péter Török

他の人はすでにそれがMavenの慣習だと言っていますが、代わりにあなたの質問に答えます:

まったくありません。確かに、コードの一部を分離してルートフォルダを分離することは有益ですが、通常は

  • [ルート]
    • src
      • com.org.net
        • あなたのクラス
    • テスト
      • com.org.net
        • YourTest.class
    • lib
    • 置き場
    • 資源

代わりに。実際、Mavenが実際に行っていることは、これが非常に大きなことです間違った:テキストコンテンツのみを対象とするソースコードリポジトリにバイナリコンテンツを追加したい!すべてのバイナリコンテンツは、ソースコードリポジトリの外部で管理する必要があります。これには、Webアプリケーションの画像などが含まれます。

しかし、OK、やや臭いMavenエコシステムに住むことにしたとしましょう。もちろん、可能な限り厳密にMavenの規則に従う必要があります。

13
Esko

そのMavenの慣習。

Mavenは Convention over configuration パラダイムに基づいています。つまり、この規則に従わない場合は、ソースの場所を設定する必要があります。それが私見の主な利点です。

9
sourcerebels

はい、これはMavenの慣例ですが、Mavenを使用していない場合でも、それを使用する利点があります。

  1. プロジェクトの初心者は、「標準」であるため、速度を上げるのが簡単になります。
  2. この規則には柔軟性があり、Java以外のコードや、現時点では持っていないその他のもののための場所があります。これが人気の理由の1つであり、自分で考案したスキームよりも優れていると思うかもしれません。
  3. いつかMavenに移動したい場合は簡単です

切り替えるためだけに切り替える必要があるとは言いませんが、新しいプロジェクトを開始するときに、コードを分割する方法について哲学的に同意しない限り、実際に使用しない理由はありません。

4
ndp