サービスによって発行された WSDL に基づいて、Apache CXF を使用して基礎となるコードを生成する、Web サービスを使用する Java Web プロジェクトがあります。
開発用のサービスのテスト バージョンと製品版があります。2 つのサービスのエンドポイントは異なる URL にあり、それらのパブリック インターフェイスはほとんど同じですが、プロジェクトを運用環境にプロモートする際に (cxf-codegen-plugin を使用して) CXF コードを再生成します。
これを行うためにMavenを構成する最良の方法は何ですか?
現時点では、pom.xml
呼び出されたプロパティを設定していますws_status
<properties>
<ws_status>test</ws_status>
</properties>
その後、これを使用して、codegen プラグインで使用される WSDL ファイルへのパスを微調整します。
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<configuration>
<fork>once</fork>
<encoding>UTF-8</encoding>
<additionalJvmArgs>-Djava.endorsed.dirs=${project.build.directory}/endorsed</additionalJvmArgs>
<!-- rest of the normal codegen configuration options -->
</configuration>
<dependencies>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>wsdl2java</goal>
</goals>
<configuration>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/wsdl/${ws_status}/Cmis.wsdl</wsdl>
<wsdlLocation>classpath:wsdl/${ws_status}/Cmis.wsdl</wsdlLocation>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-verbose</extraarg>
<extraarg>-compile</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
</execution>
</executions>
</plugin>
これは問題なく動作しますが、pom ファイルは git によって追跡されるため、製品版をリリースするたびにws_status
内部を変更する必要があることに悩まされます。pom.xml
私が欲しいのは、プロジェクト内のコードを変更することなく、テストまたは実稼働環境のソースを生成できるように、1 つの WSDL ファイルまたは別の .xml ファイルを参照するように指示する Maven コマンドライン スイッチです。これはMavenの「ビルドプロファイル」ですか?
何か案は?ありがとう。