2011-09-16 11 views
16

私はホスト名を検索してMavenのプロパティとして設定する方法を探しています。Mavenからホスト名を検索する

これは、すべての環境では動作しません:

... 
<properties> 
    <hostname>${env.HOSTNAME}</hostname> 
</properties> 
... 

任意の提案を?

+0

実際のビルドで、またはCI環境内でのみ必要ですか? – khmarbaise

+0

$ {hostname}を実行するホスト名で置き換えるテストプロパティファイルをフィルタリングしたいと思います。これは、ローカルビルドやCI環境に役立ちます。 "実際の"ビルドでは、プロパティファイル内のホスト名はハードコードされています。これは、プロパティファイルが正しい環境用であることを確認するためです。 – steinim

+0

ビルド環境を作るのではなく、必要なすべての環境の成果物を作成しないのはなぜですか?これについてはどうすればいいですか:http://blog.soebes.de/index.php?/archives/340-Maven-Configuration-For-Multipe-Environments.html – khmarbaise

答えて

25

私はクロスplattform問題の簡単な解決策になってしまった

<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> 
+0

すばらしい解決策!ありがとう:) – steinim

+2

Mavenはこの情報を他の方法で公開することはできません。しかし、ハックハック。通常、このように設定されている他のプロパティを知っていますか? – cwash

+1

@cash Hack?合意したそれはシステムや環境のプロパティとしてMavenに利用できない情報の項目に必要です。参照:http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html –

4

$ {env.COMPUTERNAMEは}私の作品プロジェクトプロパティ...

+0

けれども私は、これは – rudolfson

2

設定するグルーヴィーなスクリプトを使用します。

<manifestEntries> 
    <Build-Host-Linux>${env.HOSTNAME}</Build-Host-Linux> 
    <Build-Host-Windows>${env.COMPUTERNAME}</Build-Host-Windows> 
</manifestEntries> 
+8

特定のウィンドウnixの UNIX $ {ENVであると思います。HOSTNAME} のWindows $ {} env.COMPUTERNAME $ {} env.HOSTNAME user1885834

+0

いいですね。しかし、RHEL7ではHOSTNAMEが定義されていません。 – Christian

+0

それは変です。 RHEL6はこれでOKです。あなたはホスト名だけでなくenv.HOSTNAMEを持っていますか? – AxelW

0

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> 
+0

そのHOSTNAMEはRedHatで定義されていません:( – Christian

関連する問題