En un proyecto Maven, ¿cómo puedo actualizar automáticamente la versión de todos los módulos del niño, además de los padres?

StackOverflow https://stackoverflow.com/questions/2341906

Pregunta

Tengo un proyecto de varios módulos.

parent POM (1.0-SNAPSHOT)
|-- module1 (1.0-SNAPSHOT)
|-- module2 (1.0-SNAPSHOT)
`-- module3 (1.0-SNAPSHOT)

Cuando ejecuto liberación mvn: preparo POM verificar que los padres tiene una versión de instantáneas y todos los módulos dependientes no tienen una versión INSTANTÁNEA. Cómo actualizar automáticamente todos los módulos niño desde instantáneas hasta la próxima versión?

Me gustaría versión de la subasta de forma automática para todos los módulos.

¿Fue útil?

Solución

El plug-in de liberación puede manejar eso. ¿Ha comprobado Actualizando POM Versiones ? Pero... No entiendo algo. Cambio de la versión en el POM de x-INSTANTÁNEA a una nueva versión y chocar la versión de los POM a un nuevo valor y-INSTANTÁNEA debe ser realizado por release:prepare como se explica en Preparar una lanzamiento. Lo que va mal cuando se utiliza este objetivo?

Actualización: El autoVersionSubmodules parámetro podría ser lo que estás buscando. Desde el Prepare ejemplo un estreno :

  

proyectos multi-módulo

     

Se le pedirá para la versión   número para cada módulo del proyecto.   Si prefiere que cada módulo se   la misma versión que el POM padres,   puede establecer la opción   autoVersionSubmodules a true. Ahora tu   se le pedirá una sola vez para el   versión de lanzamiento y el siguiente   el desarrollo de versiones.

De fragmentos de matriz pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>x.y.z</version>
            <configuration>
                <goals>deploy</goals>
                <autoversionsubmodules>true</autoversionsubmodules>
            </configuration>
        </plugin>
    </plugins>
</build>

Otros consejos

Una forma flexible para conjunto versiones poms, proyectos de varios módulos incluidos, es Maven Plugin .

mvn versions:set -DnewVersion=your_new_version

Se ajustará todas las versiones del pom, las versiones de los padres y las versiones de los niños en un proyecto de varios módulos.

entonces

mvn versions:commit

o

mvn versions:revert
  1. Haga la versión de todos los sub-proyecto se definirá en su pom.xml padres.
  2. Asegúrese de que todas las versiones de sub-proyectos son los mismos a la versión de sus padres.

    <groupId>com.xyz</groupId>
    <artifactId>module-1</artifactId>
    <packaging>jar</packaging>
    
    <parent>
      <groupId>com.xyz</groupId>
      <artifactId>xyz-parent</artifactId>
      <version>1.0.123-SNAPSHOT</version>
    </parent>
    

    <?xml version="1.0" encoding="UTF-8"?>
    <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/maven-v4_0_0.xsd">
    
      <modelVersion>4.0.0</modelVersion>
      <artifactId>xyz-parent</artifactId>
      <groupId>com.xyz</groupId>
      <version>1.0.123-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>xyz-parent</name>
    
      <dependencyManagement>
        <dependencies>
    
        <!-- Message -->
        <dependency>
          <groupId>com.xyz</groupId>
          <artifactId>module-1</artifactId>
          <version>${project.version}</version>
        </dependency>
    
        <dependency>
          <groupId>com.xyz</groupId>
          <artifactId>module-2</artifactId>
          <version>${project.version}</version>
        </dependency>
    
      </dependencyManagement>
    </project>
    
  3. Cree otra pom.xml agrupar los proyectos en conjunto.

    <modules>   
      <module>../xyz-parent</module>
      <module>../module-1</module>
      <module>../module-2</module>      
    </modules>
    
  4. A continuación, actualice la versión del proyecto principal y luego construirlo por debajo de comandos.

    mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT
    mvn clean install
    
  5. A continuación, actualice la versión de los padres que se define en los sub-proyecto para el latset

    mvn -N versions:update-child-modules
    
  6. A continuación, construirlos juntos.

    @echo on
    cd   .\xyz-parent
    call mvn versions:set -DnewVersion=1.0.1004-SNAPSHOT -o
    call mvn versions:commit -o
    call mvn clean install -o
    :::http://www.mojohaus.org/versions-maven-plugin/examples/update-child-modules.html
    cd ..\xyz-buildaggregate-ide
    call mvn -N versions:update-child-modules -o
    call mvn clean install -o
    

Hay una potencialmente mejor opción sobre la dirección https://issues.apache.org/jira/browse/MNG-624?focusedCommentId=14415968&page=com.atlassian.jira.plugin.system.issuetabpanels:comment -tabpanel # comment-14415968

Esto es una solución para el hecho de que no se puede hacer referencia a la pom nivel superior en los poms del sub-módulo sin tener una versión explícita en la lista. (Que es lo bug MNG-624 es aproximadamente) En él se explica cómo se puede tener una única ubicación para la versión (en un archivo profiles.xml de nivel superior), y simplemente tener una referencia de propiedad en todos los archivos pom.xml (es decir, $ {} currentVersion)

Sin embargo, en este comunicado esquema:. Preparar probablemente no va a actualizar profiles.xml para usted

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top