web-dev-qa-db-ja.com

Mavenディレクトリ構造用に生成されたソースファイルの場所

src/main/Javaフォルダーに加えて、主なソースに必要な生成されたJavaソース。コード生成が呼び出されます手動、必要に応じて生成されたソースはチェック済みソースリポジトリにあります。すべてがビルドおよびパックされます一緒に

生成されたJava sourcesがメインソースと一緒にコンパイルされるのに最適な場所はどこでしょうか?

  • /src/generated/Java(統合テストではsrc/testInt/Javaと同じ命名ロジックに従います)
  • /generated-src/main/Javaと衝突)「srcディレクトリには、プロジェクトをビルドするためのすべてのソースマテリアルが含まれています」
  • /src/main/generated-Java(まあ... generated-Javaは型ではありません)
  • ...?

最初のオプションは、この場合に最も適切なオプションのようです。どう思いますか? Maven docsには、この状況を説明するものがありますか?同様の構造を持つレポを知っていますか?

ありがとうございました。

回答

@ Absurd-Mindが示唆するように、私たちが考えている方向は、ソースをサブモジュールに分割することです(これはGradleでうまく機能します)。そのため、生成されたソースと他の関連ソースは独自のサブモジュールに入り(別のアーティファクトを生成します)、残りはこのサブモジュールを使用する他のサブモジュールに入ります。ありがとうございました。

32
igr

場所は、ソースがどのように生成され処理されるかに依存すると思います。

  1. ソースコードはビルドプロセス中に自動的に生成されます:その後、target/main/Java/target/test/Java/などを使用します。このコードは、簡単に再構築できるため、CVSにチェックインされません。プロジェクトをクリーンアップする場合、targetディレクトリが削除され、ソースが再構築されます。

  2. ソースコードは外部ツールまたは同様のものによって手動で生成されますgenerated/src/main/Java/generated/src/test/Java/generated/src/main/resources/などを使用します。このコードはチェックインする必要があります。最上位のディレクトリ名がgeneratedであることがすぐにわかると、以下のすべてのファイル/ディレクトリも生成されることがわかります。また、最上位ディレクトリの下に標準のmavenディレクトリ構造があります。もう1つのポイントは、他の多くのディレクトリ(例のようにsrc/main/generated-Javaおよびsrc/test/generated-Java)を調べることなく、generatedを削除して再作成するだけで、クリーンアップが簡単であるということです。

[〜#〜] edit [〜#〜]:別の素敵な解決策は、myproject-generated-1.0.3.jarのような生成されたソースのみを含むMavenプロジェクトを作成することです。このプロジェクトは、実際のアプリケーションの依存関係になります。次に、生成されたソースint src/main/Javaを配置します。

38
Absurd-Mind

私が知っている限り、生成されたソースには標準のフォルダ構造はありません。私のプロジェクトでは、src/gen/Java表記法の種類。

3
bhdrkn

src/main/Javasrc/main/resources内のMavenプロジェクトソースファイルストア、およびsrc/test/Java内のテストクラスストア。
Mavenで生成されたコード(コードのコンパイル)でtarget/フォルダーに保存されます。
Mavenプロジェクトをビルドすると、生成されたすべてのコードがターゲットフォルダーで更新されます。

0
sus007