2011-10-26 21 views
6

Estoy usando Maven 3.0.3 con JUnit 4.8.1. En mi prueba JUnit, ¿cómo leo el project.artifactId definido en mi archivo Maven pom.xml? En mi pom, tengo¿Cómo leer las propiedades de Maven de la prueba 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> 

Pero esto no está funcionando dentro de mi prueba unitaria a la gete Identificación del artefacto ...

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

Las salidas anteriores "artifactId: nulo". De todos modos, agradecer cualquier ayuda, - Dave

+0

duplicado posible de [Cómo recuperar las propiedades de Maven dentro de una prueba unitaria?] (http://stackoverflow.com/questions/247346/how-to-retrieve-maven-properties-inside-a-junit-test) – approxiblue

Respuesta

5

Mira el systemPropertyVariables (y amigos) para surefire. Hace lo que quieres. AFAIK no hay forma de pasar todas las propiedades maven sin listarlas.

9

Las propiedades del proyecto Maven no se agregan automáticamente a las propiedades del sistema Java. Para lograrlo, hay bastantes opciones. Para esta necesidad específica, podría definir una propiedad del sistema para maven-surefire-plugin (la que ejecuta las pruebas) y luego usar el método 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> 

Otra forma de conseguir obtener propiedades de Maven para las pruebas de JUnit sería probablemente el filtrado de recursos para los archivos fuente de prueba.

PS. Leer las configuraciones de Maven en tiempo de ejecución, incluso en las pruebas es bastante sucio en mi humilde opinión. :)

+1

usa systemPropertyVariables en lugar de systemProperties (obsoleto) –

0

A veces, Eclipse está configurado para utilizar el generador de Java para Proyecto-> Crear automáticamente (derecha click-> Proyecto-> Propiedades-> Constructores)

Si tal es el caso, a veces el filtrado de recursos doesn no funciona Tiene varias opciones:

  1. Proporcione la propiedad en el archivo pom.xml como se indica anteriormente.
  2. Proporcionar un archivo de propiedades y realizan recursos Maven filtrado
  3. Uso invocador Maven

2 y 3 se describen en http://scottizu.wordpress.com/2013/10/16/reading-the-project-version-from-the-maven-pom-file/

Cuestiones relacionadas