maven の cxf-codegen-plugin に奇妙な動作があります。
いくつかの情報:
3 つの子 (SERVICE、CLIENT1、CLIENT2) を持つ 1 つの親 pom (PARENT と呼ばれる)。
このサービスは、2 つのクラスから始まる 2 つの分類子によって記述された 2 つの wsdl を生成します。サービス pom.xml は次のとおりです。
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-java2ws-plugin</artifactId>
<executions>
<execution>
<id>generate-client-first</id>
<phase>process-classes</phase>
<configuration>
<classifier>first</classifier>
<className>com.CLASS1</className>
<genWsdl>true</genWsdl>
<verbose>true</verbose>
<attachWsdl>true</attachWsdl>
</configuration>
<goals>
<goal>java2ws</goal>
</goals>
</execution>
<execution>
<id>generate-client-second</id>
<phase>process-classes</phase>
<configuration>
<classifier>second</classifier>
<className>com.CLASS2</className>
<genWsdl>true</genWsdl>
<verbose>true</verbose>
<attachWsdl>true</attachWsdl>
</configuration>
<goals>
<goal>java2ws</goal>
</goals>
</execution>
</executions>
</plugin>
CLIENT1 と 2 は、SERVICE で生成された分類された wsdl から始まる 2 つの Java クライアントを生成します。したがって、CLIENT1 pom.xml
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<executions>
<execution>
<id>generate-sources-client1</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdlArtifact>
<groupId>com.something</groupId>
<artifactId>artifact</artifactId>
<version>${project.version}</version>
<classifier>first</classifier>
</wsdlArtifact>
</wsdlOption>
</wsdlOptions>
<defaultOptions>
<faultSerialVersionUID>FQCN</faultSerialVersionUID>
</defaultOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
CLIENT2 pom.xml
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<executions>
<execution>
<id>generate-sources-client2</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdlArtifact>
<groupId>com.something</groupId>
<artifactId>artifact</artifactId>
<version>${project.version}</version>
<classifier>second</classifier>
</wsdlArtifact>
</wsdlOption>
</wsdlOptions>
<defaultOptions>
<faultSerialVersionUID>FQCN</faultSerialVersionUID>
</defaultOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
CLIENT2 pom ( mvn -U clean install ) だけを実行すると、PARENT pom で目的のmvn -U generate-sourcesを実行する限り、すべてが正常に機能します。
2 番目のクライアントが生成されないため、親 pom でmvn -U clean installを実行すると問題が発生します。実際には、常に最初の wsdl が「解決」されます。
[INFO] ------------------------------------------------------------------------
[INFO] Building client2 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ client2 ---
[INFO] Deleting /home/developer/workspace/PARENT/CLIENT2/target
[INFO]
[INFO] --- cxf-codegen-plugin:3.0.4:wsdl2java (generate-sources) @ client2 ---
[INFO] com.something:artifact:wsdl:first:1.0-SNAPSHOT resolved to /home/.../Class1.wsdl
[INFO] Resolved WSDL artifact to file /home/.../Class1.wsdl
この場合、1 回のビルドで 2 回の実行があったため、問題はこれとは異なります。最後の 2 つの情報: 1) ローカルではこの問題が発生しますが、Jenkins ではすべてが正常に動作します。2) Maven バージョン
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T18:29:23+01:00)
Maven home: /opt/develop/apache-maven/apache-maven-3.2.5
Java version: 1.8.0_31, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_31/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.13.0-46-generic", arch: "amd64", family: "unix"
手伝って頂けますか?
どうもありがとう!