0

サービスによって発行された 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の「ビルドプロファイル」ですか?

何か案は?ありがとう。

4

1 に答える 1

0

POM の上部にあるプロパティを削除する必要があります。次のように Maven コマンドラインを呼び出すことができます。

mvn goal -Dws_status=your_status_value

そして、それはOKでなければなりません。

于 2013-03-14T10:31:39.587 に答える