2012-01-06 15 views
9

¿Cómo obtengo la versión de Maven de mi proyecto programáticamente?Obtención de la versión Maven de su proyecto mediante programación

En otras palabras:

static public String getVersion() 
{ 
    ...what goes here?... 
} 

Por ejemplo, si mi proyecto generaría el frasco CalculatorApp-1.2.3.jar, quiero volver getVersion()1.2.3.

+1

¿Te refieres a un complemento o a la aplicación en sí? –

+0

¿Qué piensas hacer con la versión de maven? Si la necesidad es incluir la información en algún archivo durante el proceso de creación, entonces puede utilizar [build-helper-maven-plugin] (http://mojo.codehaus.org/build-helper-maven-plugin/maven -version-mojo.html) que le dará la versión de maven. – CoolBeans

+0

Es posible que haya malinterpretado su pregunta. Si desea obtener la versión de su proyecto (no la versión de maven como mi comentario anterior), eche un vistazo [aquí] (http://blog.nigelsim.org/2011/08/31/programmatically-getting-the -maven-version-of-your-project /). – CoolBeans

Respuesta

16

Crear archivo version.prop en src/main/resources con el siguiente contenido:

version=${project.version} 

Agregue lo siguiente al pom de su proyecto:

<build> 
... 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/version.prop</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>false</filtering> 
      <excludes> 
       <exclude>**/version.prop</exclude> 
      </excludes> 
     </resource> 
    </resources> 
... 
</build> 

Agregue el siguiente método:

public String getVersion() 
{ 
    String path = "/version.prop"; 
    InputStream stream = getClass().class.getResourceAsStream(path); 
    if (stream == null) 
     return "UNKNOWN"; 
    Properties props = new Properties(); 
    try { 
     props.load(stream); 
     stream.close(); 
     return (String) props.get("version"); 
    } catch (IOException e) { 
     return "UNKNOWN"; 
    } 
} 

P. S. Se encontró la mayor parte de esta solución aquí: http://blog.nigelsim.org/2011/08/31/programmatically-getting-the-maven-version-of-your-project/#comment-124

+0

¿Por qué la 2da definición de recurso con filtrado está configurada como falsa? – demaniak

+0

@demaniak la primera copia solo la version.properties y la filtra, la segunda copia todo pero la version.properties y no filtra. – pauli

Cuestiones relacionadas