2014-10-21 12 views
8

Ciao Sto lavorando a un progetto java maven in cui devo definire alcune variabili nel file pom.xml.Impossibile ottenere i valori delle variabili <systemPropertyVariables> da pom

Ho definito una variabile come segue nel mio file pom.xml.

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

Per provare ad accedere alla variabile my.value, io sto usando il seguente pezzo di codice Java.

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

Ma l'uscita della console mi mostra sempre null anche quando ho impostato il valore della variabile.

Qualcuno può segnalare cosa c'è di sbagliato qui?

Grazie in anticipo.

EDIT: Ho anche provato a dichiarare il systemPropertyVariables sotto il maven-failsafe-plugin ma senza modifiche.

NOTA: Quando provo a convertire la linea di testdata di codice come segue,

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

ottengo un'eccezione NullPointer alla linea di cui sopra.

Edit: Ci scusiamo per questo distacco da una precedente risposta ..

Sono in esecuzione come test JUnit usando il plugin .../codice del plugin che hai fornito, ma qui è la mia uscita della console ..

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 

l'URL è quello che sto cercando di recuperare dal file pom.xml e la condizione che ho scritto è che

se il valore della variabile è vuota di inizia con $ {poi tornare localhost: 8080 altro ritorno l'url.

Quindi, se mi si potrebbe puntare a qualcosa di sbagliato qui

+0

ho mai sentito parlare di accesso variabili da voi pom.xml Maven è un sistema di generazione e non ha nulla a che fare con. eseguendo il codice. A meno che non si stia parlando di test sparati da Maven? –

+0

@ScaryWombat sto eseguendo test JUnit per l'automazione mobile. – Ram

risposta

2

Opere per me con maven-3.2.3 sul Windows con JDK 1.6.0_67

creato un progetto con maven-archetype-quickstart ...

aggiunti importanti linee di pom ... combinando surefire example con linee specifiche nella domanda sopra.

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

linee rilevanti in AppTest.java

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

uscita Rilevante da 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 è il progetto in github.

+0

devo specificare ovunque project.build.directory e se sì quale dovrebbe essere il suo valore? – Ram

+0

eseguo test JUnit per l'automazione di webpae mobile utilizzando appium, quindi quando eseguo il mio progetto come test Maven, genera un errore durante la creazione dell'istanza del mio AppiumDriver. Qualsiasi idea Cosa fare ? – Ram

+0

'buildDirectory' è solo un valore di esempio. Puoi vedere lo snippet 'pom' qui sopra per vedere come è impostato il valore per esso. – Raghuram

-2

@Raghuram Grazie per l'aiuto.

Ho avuto modo di aggirare questo problema.

Nel mio file java, nel l'annotazione @Before, io pongo il valore della variabile come segue

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

E ora funziona bene.

Cheers.

Nota: Ragazzi mi dispiace per la pubblicazione di un'altra domanda come risposta .. :(

Problemi correlati