2011-10-26 13 views
6

Sto usando Maven 3.0.3 con JUnit 4.8.1. Nel mio test JUnit, come faccio a leggere il project.artifactId definito nel mio file Maven pom.xml? Nel mio pom, hoCome leggere le proprietà Maven dal test JUnit?

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.myco.pplus2</groupId> 
<artifactId>pplus2</artifactId> 

Ma questo non sta funzionando nel mio test JUnit per Gete l'artefatto id ...

@Before 
public void setUp() { 
    ...   
    System.out.println("artifactId:" + System.getProperty("project.build.sourceEncoding")); 
} // setUp 

Le uscite di cui sopra "artifactId: null". In ogni caso, apprezzare qualsiasi aiuto, - Dave

+0

Eventuali duplicati di [Come recuperare le proprietà Maven all'interno di un test JUnit?] (http://stackoverflow.com/questions/247346/how-to-retrieve-maven-properties-inside-a-junit-test) – approxiblue

risposta

5

Guarda il systemPropertyVariables (e amici) per surefire. Fa quello che vuoi. AFAIK non c'è modo di passare solo tutte le proprietà di Maven senza elencarle.

9

Le proprietà del progetto Maven non vengono aggiunte automaticamente alle proprietà del sistema Java. Per raggiungere questo ci sono alcune opzioni. Per questa specifica esigenza è possibile definire una proprietà System per maven-surefire-plugin (quella che esegue test) e quindi utilizzare il metodo System.getProperty.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.10</version> 
    <configuration> 
     <systemProperties> 
      <property> 
       <name>projectArtifactId</name> 
       <value>${project.artifactId}</value> 
      </property> 
     </systemProperties> 
    </configuration> 
</plugin> 

Altro modo per ottenere il recupero delle proprietà Maven di test JUnit sarebbe probabilmente risorse di filtraggio per i file di origine di prova.

PS. Leggendo le configurazioni di Maven in fase di esecuzione, anche nei test è abbastanza sporco IMHO. :)

+1

usa systemPropertyVariables invece di systemProperties (deprecato) –

0

A volte, Eclipse è configurato per utilizzare il Generatore di Java per Project-> Build Automatically (click destro-> Progetto-> Properties-> Costruttori)

Se tale è il caso, a volte il filtraggio delle risorse doesn lavorare Sono disponibili diverse opzioni:

  1. Fornire la proprietà nel file pom.xml come sopra.
  2. Fornire un file di proprietà ed eseguire delle risorse Maven filtraggio
  3. Utilizzare il Maven Invoker

2 e 3 sono descritti in http://scottizu.wordpress.com/2013/10/16/reading-the-project-version-from-the-maven-pom-file/

Problemi correlati