我正在寻找一种方法来查找主机名并将其设置为Maven中的一个属性。从Maven查找主机名
这并不是在所有环境下工作:
...
<properties>
<hostname>${env.HOSTNAME}</hostname>
</properties>
...
有什么建议?
我正在寻找一种方法来查找主机名并将其设置为Maven中的一个属性。从Maven查找主机名
这并不是在所有环境下工作:
...
<properties>
<hostname>${env.HOSTNAME}</hostname>
</properties>
...
有什么建议?
使用Groovy脚本设置项目属性
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
project.properties["hostname"] = InetAddress.getLocalHost().getHostName()
</source>
</configuration>
</execution>
</executions>
</plugin>
我结束了一个简单的解决方案,以跨plattform问题:
<manifestEntries>
<Build-Host-Linux>${env.HOSTNAME}</Build-Host-Linux>
<Build-Host-Windows>${env.COMPUTERNAME}</Build-Host-Windows>
</manifestEntries>
听起来不错。但HOSTNAME未在RHEL7上为我定义。 – Christian
这很奇怪。 RHEL6可以。你确定你有env.HOSTNAME而不只是HOSTNAME吗? – AxelW
user1885834发表的评论对我来说最合适:为Windows和Linux创建配置文件并使用各自的环境变量来定义新的属性$ {hostname} sed在任何地方。
<profile>
<id>unix</id>
<activation>
<os>
<family>unix</family>
</os>
</activation>
<properties>
<hostname>${env.HOSTNAME}</hostname>
</properties>
</profile>
<profile>
<id>windows</id>
<activation>
<os>
<family>Windows</family>
</os>
</activation>
<properties>
<hostname>${env.COMPUTERNAME}</hostname>
</properties>
</profile>
只有HOSTNAME没有在RedHat上定义:( – Christian
您是否需要在实际构建中或仅在CI环境中使用? – khmarbaise
我想过滤测试属性文件,用$ {hostname}替换它运行的主机名。这对本地构建和CI环境很有用。对于“真正的”构建,属性文件中的主机名是硬编码的。这是为了确保属性文件适用于正确的环境。 – steinim
为什么不为每个需要创建构建环境的环境创建工件?这是什么:http://blog.soebes.de/index.php?/archives/340-Maven-Configuration-For-Multipe-Environments.html – khmarbaise