0

MavenによってコンパイルされるJavaソースを生成する必要があります。問題は、これらのソースを生成するレガシーコードがJavaで記述されていることです。使用された解決策(回避策)は次のとおりでした:

  • Javaソースを生成するコードを含むプロジェクトA
  • プロジェクトAに依存し、Mavenでantrunを呼び出してプロジェクトAのクラスを実行するプロジェクトB

プロジェクトBをビルドすると、Mavenは次のようになります。

  • プロジェクトA(ソースを生成するコード)をコンパイルし、プロジェクトAのpom.xmlが指示するその他のことをすべて実行します。
  • これらのクラスをantrunします(プロジェクトBのpom.xmlによって要求されます)-したがって、ソースが生成され、プロジェクトBに追加されます
  • プロジェクトBのソースをコンパイルする

これは、Antrunでは、プロジェクトAのクラスが実行時にすでにコンパイルされている必要があるためです。ただし、これは醜い解決策であり、プロジェクトAとBは実際には1つのプロジェクトにすぎないはずです。私は使用する必要があることを知っています:

<phase>generate-sources</phase>

Groovy(http://blog.retep.org/2009/11/07/using-groovy-to-generate-java-sources-in-maven/)の例を見ましたが、あるかどうか知りたいです。すべてを1つのプロジェクトにまとめ、コード生成をJavaからGroovyなどに変更する必要がなく、これを行うためのより簡単な方法。

ありがとう。

4

1 に答える 1

2

私はそのような状況でGroovyを使用しますが、必要がない場合は、2つの別々のプロジェクトを用意するのが正しい方法です。

そして、私は一方のプロジェクトをもう一方のプロジェクトからコンパイルするのではなく、それらを別々のプロジェクトとして残すだけです。通常、コードジェネレータープロジェクトは「実際の」プロジェクトほど頻繁には変更されないため、常にビルドする必要はありません。

于 2012-12-11T16:17:29.953 に答える