Maven 2 如何使用插件向Maven项目添加计算属性?

Maven 2 如何使用插件向Maven项目添加计算属性?,maven-2,filter,properties,maven-plugin,Maven 2,Filter,Properties,Maven Plugin,我已经编写了一个Maven插件来获取机器IP地址,并且希望能够创建一个属性,以便在生成原型时(通过${ipaddress})将IP地址过滤到一个文件中 我一直无法找到如何做到这一点。有人知道吗?问题是-您的属性在运行生成之前被处理,并且在生成期间不能被覆盖。至少这是我的经验,我希望被证明是错误的,甚至接受否定的观点:) 所以有一种可能性——创建脚本,运行您的程序,填充系统属性,然后在(我知道这很难看)读取文件中的属性后立即运行mvn build,并使这些属性对构建可用,就好像它们是内联定义的一样

我已经编写了一个Maven插件来获取机器IP地址,并且希望能够创建一个属性,以便在生成原型时(通过${ipaddress})将IP地址过滤到一个文件中


我一直无法找到如何做到这一点。有人知道吗?

问题是-您的属性在运行生成之前被处理,并且在生成期间不能被覆盖。至少这是我的经验,我希望被证明是错误的,甚至接受否定的观点:) 所以有一种可能性——创建脚本,运行您的程序,填充系统属性,然后在(我知道这很难看)读取文件中的属性后立即运行
mvn build

,并使这些属性对构建可用,就好像它们是内联定义的一样

您可以让您的插件将ip输出到一个文件,然后使用properties插件读取该文件,或者从properties插件中捏出ip,在您自己的插件中设置属性


基本上,您只需从MavenProject获取属性并添加自己的条目即可。

您可以使用org.codehaus.groovy.maven插件获取IP并将其设置为道具。在我的示例中,我将检索到的IP设置为property 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>

org.codehaus.groovy.maven
gmaven插件
1
获取本地ip
初始化
执行
公地郎
公地郎
2.4
java.net.InetAddress address=InetAddress.getByName(“${env.COMPUTERNAME}”);
project.properties.localIP=address.getHostAddress();

不过,难道没有其他插件可以做到这一点吗?比如BuildNumber插件?我试着看了看,但这比设置一个属性要复杂得多。我不知道插件到底有什么可用的。可能是,可能是。。。我遇到了一个问题,我试图根据在父模块和子模块中定义的属性触发概要文件执行,我发现一旦设置-属性在整个构建过程中都不会更改插件就是这样做的。。。获取项目属性并添加到您的ip地址。我遇到的问题是,当执行“mvn原型:生成”时,我实际上无法让插件运行。这是我希望它发生的时候,这样生成的项目将具有已经存在的价值。