2009-05-05 22 views
38

Bir Linux kutusuna Hudson yapılarımızı çalıştırırken, sistem özelliklerini Java sanal makinesine aktarmak için komut satırını kullanıyoruz. 'u, 2.1.0'a yükseltdiğimiz için, 'un tamamen çalışmayı durdurması nedeniyle, 2.0.9'da gayet iyi çalışmak için kullanıldı. Sistem özellikleri, Java sanal makinesine asla yapmaz.Maven 2.1.0, sistem özelliklerinden Java sanal makinesine geçilmiyor

Küçük bir test projesi oluşturdum ve aslında hiç çalışmıyor.

mvn2.0.9 -Dsystem.test.property=test test 

Ama bu başarısız olur:

Bu Maven 2.0.9 ile sadece iyi çalışması gerekir

mvn2.1 -Dsystem.test.property=test test 

Java kodu sadece bu

assertTrue(System.getProperty("system.test.property") != null); 

cevap

52

I don yapar' Bunun Maven veya Surefire eklentisinde sorun olduğunu düşünmeyin. Elbette, emin ateş farklı davranıyor. Surefire, JVM'u istediğinde, tüm sistem özelliklerini ana JVM'den almayacak gibi görünüyor.

Bu nedenle, testler için istediğiniz sistem özelliklerini argLine kullanarak geçirmelisiniz. Yani, bu iki ı Surefire eklentisi ile bu yaşadıysanız

mvn2.1 -Dsystem.test.property=test test -DforkMode=never 

veya

mvn2.1 test -DargLine="-Dsystem.test.property=test" 
+0

"argLine" tam aradığım şeydi! Çok teşekkürler! "- Duser.language = de -Duser.region = DE" olup mvn testi -DargLine = "- – armandino

+0

şaşırtıcı Locale.getDefault için() bu mvn testi -DargLine = çalışan Dsystem.user.language = de - Dsystem.user.region = DE " – bibstha

+3

Lütfen unutmayın, vor maven 3 sadece" mvn -Dsystem.test.property = test testini "kullanıyorsunuz. Maven mülkü testlere yayıyor. – BetaRide

12

çalışmalıdır. Surefire eklentisi, Maven tarafından başlatılan farklı bir JVM örneğinin altında çalışır. Komut satırı paramları pom.xml dosyanızdaki surefile-eklenti konfigürasyonu altında konfigüre edilebilir. İşte yapılandırmamızın bir örneği.

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.4.3</version> 
      <!-- 
        By default, the Surefire Plugin will automatically include all test classes with the following wildcard patterns: 
        "**/Test*.java" - includes all of its subdirectory and all java filenames that start with "Test". "**/*Test.java" - 
        includes all of its subdirectory and all java filenames that end with "Test". "**/*TestCase.java" - includes all of 
        its subdirectory and all java filenames that end with "TestCase". 
       --> 
      <configuration> 
       <includes> 
        <include>**/*Test.java</include> 
       </includes> 
       <systemProperties> 
        <property> 
         <name>app.env</name> 
         <value>dev</value> 
        </property> 
        <property> 
         <name>oracle.net.tns_admin</name> 
         <value>${oracle.net.tns_admin}</value> 
        </property> 
       </systemProperties> 
      </configuration> 
     </plugin> 
+4

Günümüzde yerine kullanın. Bkz. Http://maven.apache.org/plugins/maven-surefire-plugin/examples/system-properties.html –

+0

Bunu denedim ve $ {...} mülkle değiştirilmiyor gibi görünüyor maven için geçen değer ... – thecoop

+0

@thecoop - sorunun ne olduğundan emin değil, bir yerde yanlış yazım olabilir, ama bu benim için oldukça iyi çalıştı. –

2

Yapılandırma dosyasını komut satırı bağımsız değişkenleriyle karıştırmamaya dikkat edin. Yapılandırma dosyası (pom.xml) tüm cmd argümanlarını geçersiz kılar. Bu nedenle pom.xml içinde eminfire eklentisini yapılandırmak istemiyorsanız, eğer açıklamak gerekirse, raisercostin gibi bir komut satırı çizin.

İlgili konular