我有一个pom.xml,它使用cxf-codegen-plugin来生成几个WS客户端。
在cxf-codegen-plugin的配置中,有WSDL位置。
我想将这些字符串外部化为env.properties文件。
我使用org.codehaus.mojo的properties-maven-plugin来查看src / main / resources / conf / app / env.properties。
如何让Hudson用合适的主机替换这些属性?
提前致谢
答案 0 :(得分:2)
过滤和配置文件应该有效。
设置husdon过滤器文件并放在src / main / filters中。为您需要运行的每个区域创建一个额外的过滤器文件。
过滤器文件的名称应相似,如下所示:filter-hudson.properties,filter-prod.properties等,并包含相同的属性:
wsdl.host=myHost
etc...
然后有简单的配置文件,其中包含您运行的环境:
<profiles>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
<profile>
<id>hudson</id>
<properties>
<env>hudson</env>
</properties>
</profile>
</profiles>
如果您在pom中设置了过滤器:
<filters>
<filter>src/main/filters/filter-${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources/conf/app</directory>
<filtering>true</filtering>
</resource>
</resources>
然后conf应用中的文件将wsdl.host替换为过滤器中的特定值。
然后当你运行你的hudson构建时,添加-P hudson来调用hudson配置文件。
可能有一种“更好”的方式来做到这一点,但大约一年半前,我在这项技术上取得了成功。为了给予适当的信任,这是我用作说明的blog post。
答案 1 :(得分:0)
如果我理解正确,您只想提供正确的WSDL文件的路径。请参阅cxf-codgen plugin中的以下示例。
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/wsdl/myService.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
此处,WSDL的路径仅由basedir
修改,您可以将该行修改为:
...
<wsdl>${basedir}/${myRelativePath}/myService.wsdl</wsdl>
...
您可以使用properties-maven-plugin提及的路径。问题是加载正确的属性文件。这可以使用配置文件完成。
<profiles>
<profile>
<id>fitnesse</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>maven-properties-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>etc/config/dev.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profiles>
如果所有属性仅影响wsdl文件,则可以在配置文件中配置正确的wsdl文件的路径,这样就无需使用属性文件。
以防万一,我完全误解了你,你只想知道,如何将属性文件中的属性读入wsdl(xml)文件,然后查看maven-config-processor-plugin,更改xml文件的语法可在Transformation Configuration page
上找到