Поиск имени хоста от Maven
Я ищу способ найти имя хоста и установить его как свойство в Maven.
Это не работает во всех средах:
...
<properties>
<hostname>${env.HOSTNAME}</hostname>
</properties>
...
Какие-либо предложения?
4 ответа
Решение
Используйте 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>
Плагин Maven Build Helper 3.1.0 только что был выпущен для получения имени хоста, IP-адреса, резервирования порта и т. Д. (http://www.mojohaus.org/build-helper-maven-plugin/usage.html).
Добавьте это для сборки плагинов:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>init-build-properties</id>
<goals>
<goal>hostname</goal>
</goals>
<configuration>
<hostnameProperty>my.hostname</hostnameProperty>
</configuration>
</execution>
</executions>
</plugin>
Я закончил с простым решением кросс-платформенной проблемы:
<manifestEntries>
<Build-Host-Linux>${env.HOSTNAME}</Build-Host-Linux>
<Build-Host-Windows>${env.COMPUTERNAME}</Build-Host-Windows>
</manifestEntries>
Комментарий, размещенный пользователем 1885834, работал лучше всего для меня: создайте профили для Windows и Linux и используйте соответствующие переменные среды, чтобы определить новое свойство ${hostname}, которое будет использоваться где угодно.
<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>