Maven

2011-09-16 15 views
16

dan ana makine adı bak Ben ana bilgisayar adını aramak ve Maven bir özellik olarak ayarlamak için bir yol arıyorum.Maven

Bu, tüm ortamlarda çalışmaz:

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

bir öneriniz?

+0

Bunu gerçek bir yapıda mı yoksa yalnızca CI ortamında mı ihtiyacınız var? – khmarbaise

+0

$ {hostname} yerine test-property dosyalarının çalıştığı hostname ile filtrelemek istiyorum. Bu yerel yapılar ve CI ortamları için kullanışlıdır. "Gerçek" için, özellik dosyasındaki ana bilgisayar adı, sabit kodlanmış olarak oluşturulur. Bu, özellik dosyasının doğru ortam için olduğundan emin olmaktır. – steinim

+0

Neden bir yapı ortamı oluşturmak yerine ihtiyacınız olan her ortam için yapaylık yaratmıyorsunuz? Bununla ilgili olarak: http://blog.soebes.de/index.php?/archives/340-Maven-Configuration-For-Multipe-Environments.html – khmarbaise

cevap

25

ben çapraz platform bulurlar sorununa basit bir çözüm ile sona erdi

<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

Harika çözüm! Teşekkürler :) – steinim

+2

Maven'in bu bilgiyi başka şekilde ifşa edemeyeceğine inanmak zor. Yine de güzel hack. Bu şekilde tipik olarak belirlenen diğer özellikleri biliyor musunuz? – cwash

+1

@cwash Hack? kabul. Maven'e bir sistem veya ortam özelliği olarak erişilemeyen bilgiler için gereklidir. Bkz .: http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html –

4

$ {env.COMPUTERNAME} benim için çalışan proje özelliği ..

+0

olsa ben bu – rudolfson

2

ayarlamak için gelenekselleşmiş bir komut dosyası kullan:

+8

belirli pencereler nix unix $ {env sanırım.HOSTNAME} pencereler , Windows $ {env.COMPUTERNAME} $ {env.HOSTNAME} user1885834

+0

Kulağa hoş geliyor. Ancak HOSTNAME, RHEL7 üzerinde benim için tanımlanmadı. – Christian

+0

Bu garip. RHEL6 bununla sorun yok. Env.HOSTNAME ve sadece HOSTNAME ürününe sahip olduğunuzdan emin misiniz? – AxelW

0

user1885834 tarafından gönderilen Yorum benim için en iyi şekilde çalışıyor: Windows ve Linux için profiller oluşturun ve yeni bir özellik tanımlamak için ilgili ortam değişkenlerini kullanın. $ {Hostname}, u herhangi bir yere çökmek.

<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

yalnızca HOSTNAME, RedHat :(üzerinde tanımlı değil – Christian