如何使用插件将计算属性添加到Maven项目?
-
05-07-2019 - |
题
我已经编写了一个Maven插件来获取机器的IP地址,并且希望能够创建一个属性,以便在原型生成发生时将IP地址过滤到文件中(通过$ {ipaddress})。
我一直无法找到如何做到这一点。有谁知道吗?
解决方案
properties-maven-plugin 从文件中读取属性并制作它们可用于构建,就像它们已被内联定义一样。
您可以将插件输出ip到文件然后使用属性插件来读取它,或者捏 source ,用于在您自己的插件中设置属性。
基本上,您只需从MavenProject获取属性并添加自己的条目。
其他提示
您可以使用org.codehaus.groovy.maven插件获取IP并将其设置为道具。在我的示例中,我将检索到的IP设置为属性localIP,并且它在下一阶段可用作任何其他maven道具,即$ {localIP}。
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>get-local-ip</id>
<phase>initialize</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<classpath>
<element>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</element>
</classpath>
<source>
java.net.InetAddress address=InetAddress.getByName("${env.COMPUTERNAME}");
project.properties.localIP=address.getHostAddress();
</source>
</configuration>
</execution>
</executions>
</plugin>
问题是 - 您的属性在运行构建之前 处理,在构建期间无法覆盖。至少这是我的经验,我希望被证明是错误的,甚至接受负面的点:)
所以有一种可能性 - 创建运行程序的脚本,填充系统属性,然后运行 mvn build
(我知道它很难看)
不隶属于 StackOverflow