Pregunta

Tenemos 1 empresa pom padres. Esto utiliza DependencyManagement para gestionar las versiones para todas las dependencias de todos los artefactos utilizados.

Lo que es alarmante, es que las versiones de instantáneas se pueden definir en DependencyManagement. Aunque cuando se realiza la liberación experto, se permite que el POM para ser lanzado con la versión instantánea en el DependencyManagement. ¿Por qué?

Si señalo un proyecto secundario a una versión comercial de la empresa matriz pom, y este proyecto niño usa una dependencia se define en DependencyManagement pesar de que es una versión de instantáneas, no soy capaz de liberar el proyecto secundario.

¿Por qué Maven permite versión de instantáneas para un artefacto definido en DependencyManagement para ser lanzado? Y cómo puedo configurar el plugin de liberación experto a fallar si hay una versión INSTANTÁNEA definido?

¿Fue útil?

Solución

  

Lo que es alarmante, es que las versiones de instantáneas se pueden definir en DependencyManagement. Aunque cuando se realiza la liberación experto, se permite que el POM para ser lanzado con la versión instantánea en el DependencyManagement. ¿Por qué?

Yo esperaría que el experto de liberación -plugin para actualizar INSTANTÁNEA versiones en dependencyManagement después de la liberación. En realidad, hay algunos Jira sobre esto, por ejemplo MRELEASE-91 y MRELEASE-202 que pueden afectarle.

Así que la pregunta es: ¿cuál es la versión del plug-in está usando?

Pero para ser honesto, no está muy claro qué versiones se ven afectados por MRELEASE-202 , los comentarios son confusas (por lo que se preguntan si el problema es fijo o no). De todos modos, si la versión que está utilizando se ve afectada, a continuación, actualizar a una versión más reciente. Y si el error / regresión (creo que es un error) sigue ahí, a continuación, levantar un nuevo tema.

Otros consejos

No tengo la respuesta en cuanto a 'por qué' (personalmente creo que es un error), pero tengo una manera de evitar que esto suceda:. Usar el plugin de Maven Enforcer

Una empresa llamada smartics (s minúscula) han creado una regla ( NoSnapshotDependenciesInDependencyManagementRule ) para evitar este problema exacto.

Es, básicamente, tiene que agregar lo siguiente a su padre POM:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>1.4.1</version>
  <executions>
    <execution>
      <id>enforce-project-rules</id>
      <phase>test</phase>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <NoSnapshotDependenciesInDependencyManagementRule
            implementation="de.smartics.maven.enforcer.rule.NoSnapshotsInDependencyManagementRule">
            <onlyWhenRelease>true</onlyWhenRelease>
            <checkOnlyResolvedDependencies>false</checkOnlyResolvedDependencies>
          </NoSnapshotDependenciesInDependencyManagementRule>
        </rules>
      </configuration>
    </execution>
  </executions>
  <dependencies>
    <dependency>
      <groupId>de.smartics.rules</groupId>
      <artifactId>smartics-enforcer-rules</artifactId>
      <version>1.0.2</version>
    </dependency>
  </dependencies>
</plugin>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top