2014-10-21 5 views
8

Hallo Ich arbeite an einem Java-Maven-Projekt, in dem ich einige Variablen in der pom.xml-Datei zu definieren.konnte nicht erhalten <systemPropertyVariables> Variablenwerte von pom

Ich habe eine Variable wie folgt in meiner pom.xml-Datei definiert.

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.16</version> 
     <configuration> 
      <includes> 
       <include>**/*Test*.java</include> 
       <include>**/*Tests*.java</include> 
       <include>**/Test*.java</include> 
      </includes> 
      <systemPropertyVariables> 
       <my.value>NOTNULL</my.value> 
      </systemPropertyVariables> 
     </configuration> 
    </plugin> 

die my.value Variable Zugriff Um zu versuchen, bin ich mit dem folgenden Stück Code Java.

String testdata = System.getProperty("my.value"); 
    System.out.println(testdata); 

Aber die Ausgabe der Konsole zeigt mir immer null, auch wenn ich den Wert der Variablen gesetzt.

Kann jemand darauf hinweisen, was hier falsch ist?

Vielen Dank im Voraus.

EDIT: Ich habe auch versucht, die systemPropertyVariables unter der maven-failsafe-plugin aber ohne Änderung zu deklarieren.

HINWEIS: Wenn ich versuche, die Testdaten Codezeile wie folgt zu konvertieren,

String testdata = System.getProperty("my.value").toString(); 

ich eine Nullpointer-Ausnahme bei der obigen Zeile erhalten.

Edit: Sorry für diese als Antwort veröffentlichen früher ..

ich es als JUnit-Test mit dem Plugin leite .../Plugin-Code Ihnen zur Verfügung gestellten, aber hier ist meine Konsolenausgabe ..

21 Oct 2014 12:36:56,973 main          INFO s.MyClass     - Default Implicit timeout set in Driver to: 100 
21 Oct 2014 12:36:56,973 main          INFO s.MyClass     - Default URL for server is set to: http://localhost:8080 
---- null 

die URL ist, was ich von der pom.xml-Datei und der Zustand zurückzuholen versuche ich geschrieben habe, ist, dass

, wenn der Wert in der Variable beginnt mit $ leer {dann zurück localhost: 8080 sonst Rückkehr die URL

Also, wenn du mich etwas falsch hier

+0

Ich habe nie Variablen für den Zugriff zu hören von Ihnen pom.xml Maven ist ein Build-System und hat nichts damit zu tun. laufen Sie den Code. Es sei denn, Sie Tests sprechen, die von Maven abgefeuert werden? –

+0

@ScaryWombat i JUnit-Tests für mobile Automation leite. – Ram

Antwort

2

Werke für mich mit maven-3.2.3 auf Windows mit JDK 1.6.0_67

Erstellt ein Projekt mit maven-archetype-quickstart ...

Hinzugefügt relevante pom Linien zeigen könnte ... Kombinieren oben surefire example mit spezifischen Linien in der Frage.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.16</version> 
    <configuration> 
     <systemPropertyVariables> 
     <my.value>NOTNULL</my.value> 
     <buildDirectory>${project.build.directory}</buildDirectory> 
     </systemPropertyVariables> 
    </configuration> 
    </plugin> 

Relevant Linien in AppTest.java

/** 
* Rigourous Test :-) 
*/ 
public void testApp() 
{ 
    System.out.println(System.getProperty("my.value")); 
    System.out.println(System.getProperty("buildDirectory")); 
    assertTrue(true); 
} 

Relevant Ausgabe von mvn test

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running com.mycompany.app.AppTest 
NOTNULL 
C:\Users\raghu\Documents\GitHub\mvn-examples\test-properties\target 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec - in c 
om.mycompany.app.AppTest 

Here ist das Projekt in github.

+0

lese ich überall die project.build.directory angeben müssen, und wenn ja, was seinen Wert sein sollte? – Ram

+0

i JUnit-Tests für mobile webpae Automatisierung leite so mit appium, wenn ich mein Projekt als Maven Test ausführen, wirft es einen Fehler, wenn ich meine AppiumDriver bin instanziieren. Jede Idee was ist zu tun ? – Ram

+0

'buildDirectory' ist nur ein Beispielwert. Sie können oben das 'pom'-Snippet sehen, um zu sehen, wie der Wert dafür eingestellt ist. – Raghuram

-2

@Raghuram Danke für die Hilfe.

bekam ich die Möglichkeit, um dieses Problem zu umgehen.

In meiner Java-Datei, in der @Before Anmerkung, ich bin der Wert der Variablen Einstellung als

System.setProperty("my.value","this value"); 

folgt Und jetzt funktioniert es ganz gut.

Prost.

Hinweis: Jungs, ich bin leider eine andere Frage als Antwort für die Entsendung .. :(

Verwandte Themen