【问题标题】:How to distinguish between different wsdl locations in one pom.xml - Maven如何区分一个 pom.xml 中的不同 wsdl 位置 - Maven
【发布时间】:2016-01-14 17:31:48
【问题描述】:

maven中是否可以区分wsdl webservices的多种配置?

我有one application,它可以在test, stage and prod environments 上运行。而且我必须使用一项网络服务。网络服务有3 different wsdl locations。对于test, stage and prod.

ma​​ven 有没有办法说如果我想为 prod 构建我的应用程序,只需使用 prod 的 web 服务位置。舞台和测试也一样?

我有一个 wsdl 导入配置,它适用于单个非动态部分。

<plugin>
 <groupId>org.jvnet.jax-ws-commons</groupId>
 <artifactId>jaxws-maven-plugin</artifactId>
 <version>2.3</version>
 <executions>
     <execution>
         <goals>
             <goal>wsimport</goal>
         </goals>
         <configuration>
             <wsdlFiles>
                 <wsdlFile>wsdlFile_live.wsdl</wsdlFile>
             </wsdlFiles>
             <vmArgs>
                 <vmArg>-Djavax.xml.accessExternalDTD=all</vmArg>
                 <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
             </vmArgs>
             <packageName>com.example.schema</packageName>
             <wsdlLocation>http://liveLocation/?wsdl</wsdlLocation>

         </configuration>
         <id>wsimport-generate-_live.wsdl</id>
         <phase>generate-sources</phase>
     </execution>
 </executions>
 <dependencies>
     <dependency>
         <groupId>javax.xml</groupId>
         <artifactId>webservices-api</artifactId>
         <version>2.0.1</version>
     </dependency>
 </dependencies>
 <configuration>
     <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
     <xnocompile>true</xnocompile>
     <verbose>true</verbose>
     <extension>true</extension>
     <catalog>${basedir}/src/jax-ws-catalog.xml</catalog>
 </configuration>

【问题讨论】:

  • 对我来说,不得不多次构建相同的基础来获得测试、阶段、产品听起来是个坏主意。为什么不直接从环境变量中选择正确的 WSDL,告诉 java 是否获取 dev-wsdl、test-wsdl... 或 prod-wsdl

标签: java web-services maven wsdl maven-3


【解决方案1】:

在 Maven 中创建配置文件是构建具有不同范围的不同应用程序的一种可能性。

<profiles>
    <profile>
        <id>prod</id>
        <build>
         ....
       </build>
    </profile>
    <profile>
        <id>test</id>
        <build>
            ....
       </build>
    </profile>  
</profiles>

在配置文件属性中,您可以设置依赖项资源插件配置等。

要构建特定的配置文件,您必须输入 mvn -P,后跟 配置文件 ID

就我而言,它看起来像这样:mvn -Ptest clean installmvn -Pprod clean install

【讨论】:

    【解决方案2】:

    您可以使用环境变量来存储您的 wsdl 文件并传递给 maven 系统属性。例如,假设在 Linux 上您要访问环境变量 MY_VARIABLE。您可以在 pom 文件中使用系统属性。

    <properties>
    ...
    <!-- Default value for my.variable can be defined here -->
    <my.variable>foo</my.variable>
    ...
    

    ... ${my.variable}

    在maven命令行上设置属性值:

    mvn clean package -Dmy.variable=$MY_VARIABLE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 2014-07-09
      • 1970-01-01
      相关资源
      最近更新 更多