如何在编译时使用Hudson的属性文件?

时间:2010-12-26 14:52:39

标签: maven-2 properties hudson environment

我有一个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用合适的主机替换这些属性?

提前致谢

2 个答案:

答案 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

上找到