我已经编写了一个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 (我知道它很难看)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top