2011-03-24 18 views
15

¿Es posible obtener la versión principal (<Major>.<Minor>.<Patch>) del project.version?¿Cómo obtener la parte principal de una versión de Maven?

Por ejemplo, si mi versión es 1.3.4, me gustaría llegar 1 para su uso posterior en una configuración del mismo pom.xml

Algo así como:

<configuration> 
    <name>project_name.${project.version:major}</name> 
</configuration> 

Si no, ¿qué son las alternativas?

+3

Vale la pena señalar que Maven no utiliza la especificación de versiones http://SemVer.org. En su lugar, utiliza su propia convención, que es muy similar. Lea sobre esto aquí (en la sección 3.3.1 "Versiones del proyecto") ... http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-syntax.html –

Respuesta

26

Lo encontraste. El build-helper-maven-plugin tiene la capacidad de analizar los componentes de la versión.

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>build-helper-maven-plugin</artifactId> 
     <version>1.5</version> 
     <executions> 
      <execution> 
      <phase>initialize</phase> 
      <id>parse-version</id> 
      <goals> 
       <goal>parse-version</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.1</version> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <tasks> 
       <echo>[version] ${project.version}</echo> 
       <echo>[majorVersion] ${parsedVersion.majorVersion}</echo> 
       </tasks> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
+0

+1 - ¡He estado usando Maven durante años y aún no sabía nada de esto! – SingleShot

+0

gran ayuda - gracias – samael

0

Las versiones no vienen necesariamente en la estructura que usted describe.

Maven tiene convenciones para los números finales, pero no es necesario que los use.

Si tiene una convención que le guste que desee desmontar, puede escribir su propio plugin maven que establezca varias propiedades para las distintas piezas a medida que las define.

+0

Según a [la documentación de referencia de Maven] (http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-syntax.html) de Sonatype existe una convención (que usted es libre de violar). – SingleShot

7

Esto funciona en Maven 3.3.9:

${project.artifact.selectedVersion.majorVersion} 
+0

Eso funcionó muy bien para mí en maven 3.3.9. ¿Alguna idea de si eso es una cosa estándar maven? No pude encontrar la documentación oficial de maven para esa variable –

+0

Puedo decir que '$ {project.artifact}' es un buen truco, pero no es un estándar. Oficialmente, solo '$ {project}', consulte https://maven.apache.org/pom.html –

Cuestiones relacionadas