从Maven插件设置pom属性以进行资源过滤

时间:2011-06-22 16:07:05

标签: maven

我在java应用程序中有一个包含IP地址参数的conf文件。我希望能够在构建时自动将此参数放入本地IP地址。我使用maven resources-plugin如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>/home/user/config</outputDirectory>
                <resources>
                    <resource>
                        <directory>config</directory>
                        <filtering>true</filtering>
                        <includes>
                            <include>**/*.xml</include>
                            <include>**/*.properties</include>
                        </includes>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>

接下来,我创建了一个包含参数

的属性
<properties>
    <gateway.ip>${local.ip}</gateway.ip>
</properties>

然后,我创建了一个获取本地IP地址并设置上述参数的Maven插件:

final Properties props = mavenProject.getProperties();
props.put("local.ip", resultAddress.getHostAddress());

最后,我在pom.xml中定义了我的自定义插件:

<plugin>
    <groupId>com.company</groupId>
    <artifactId>get-local-ip-plugin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <executions>
        <execution>
            <id>get-local-ip</id>
            <phase>validate</phase>
            <goals>
                <goal>get-local-ip</goal>
            </goals>
            <configuration>
                <localIp>${local.ip}</localIp>
            </configuration>
        </execution>
    </executions>
</plugin>

问题是这不起作用,我在生成的文件中得到$ {local.ip}而不是xxx.xxx.xxx.xxx的ip地址。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在评论中回答:

  

发现我的错误:) - 我将两个插件绑定到验证阶段(好的   旧复制粘贴) - rperez 2011年6月22日