「jaxb2-maven-plugin」Mavenプラグインによって自動的に生成されたいくつかのJAXBクラスを追加しようとしているMavenベースのプロジェクトがあります。ただし、私の最初のカットでは循環依存ループに陥っています。
- これらの JAXB クラスはまだ生成されていないため、それらを参照する他のソースにはコンパイル エラーがあります。
- これらの他のソースにはコンパイル エラーがあるため、これらの JAXB クラスは生成されません。
これを解決するには、2 つの明らかな可能性があるようです。
- プロジェクトがビルドされ、JAXB クラスが自動的に生成されるように、壊れた参照をコメントアウトします。
/target
次に、これらの生成されたソースを からにコピーして/src/main/java
、それらへの参照によってコンパイル エラーが発生しないようにします。 - JAXB だけで構成された、完全に別のプロジェクトを作成します。メイン プロジェクトに依存関係として含めます。
ここで何か不足していますか?オプション #1 はまったくばかげているように思えます...これは、人々が JAXB を使用する方法ではあり得ません。オプション #2 はより合理的に見えますが、それでもかなり非効率的で扱いにくいものです。JAXB を使用するためだけに、まったく別のプロジェクトのオーバーヘッドを引き受ける必要があるのですか?
Maven プラグインが生成する同じプロジェクトで、開発者が JAXB 生成クラスを参照するために使用する、より洗練された方法はありますか?
更新: リクエストに応じて、POM の関連部分を以下に示します。
<build>
<plugins>
<plugin>
<!-- configure the compiler to compile to Java 1.6 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- The name of your generated source package -->
<packageName>com.mypackage</packageName>
</configuration>
</plugin>
</plugins>
</build>
を実行するmvn clean package
と、JAXB ソースが/target
サブディレクトリの下に生成されていることがわかります。ただし、これらの生成されたソースは、コンパイル フェーズのクラスパスに自動的に追加されません。
解決後の更新: 私のコンパイルの問題は、私が Eclipse で実行していたという事実と関係があり、その Maven 統合には「jaxb2-maven-plugin」にいくつかの問題があることが判明しました。その問題とその解決策の詳細については、この StackOverflow の質問を参照してください。