utiliza tutorial que proyecto probar para limpiar instalar empaquetar dependencias curso crear con compilar comandos java maven

java - tutorial - maven manual



GestiĆ³n de dependencias Maven para dependencias de complementos (4)

Recientemente, encontré el siguiente problema:

Cuando configuré la administración de dependencias para mi proyecto, tuve child-pom usando un complemento con dependencias, que quiero sincronizar con las dependencias declaradas en mi administración de dependencias.

En una raíz pom, declaré en mi gestión de dependencia:

<dependencyManagement> <dependencies> ... <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> <version>2.4.0</version> </dependency> ... <dependencies> <dependencyManagement>

Y en el pom del niño, tengo un complemento que necesita el usuario de gwt:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <version>2.4.0</version> <dependencies> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> <version>2.4.0</version> </dependency> ... </dependencies> ... </plugin>

Sin embargo, si elimino la versión de dependencia utilizada en gwt-maven-plugin, la compilación falla.

¿Hay alguna otra forma de lograrlo?

PD: hay una publicación relacionada Elección de la versión de dependencia en el complemento maven y maven que no responde mi pregunta


En mi caso, estaba usando el plugin maven plugin, con una dependencia en hsqldb. Copié algunas líneas de muestra del libro sonatype (creo que de allí obtuve las líneas) para usar el plugin jetty, que especificaba groupId como hsqldb. Estoy usando la versión 2.3.2 de hsqldb. En mi pom padre en la sección de gestión de dependencia y en mi módulo de persistencia, groupId es org.hsqldb. No coincidir con groupIds fue lo que me estaba causando un error, porque en ese viejo ID de grupo no hay una versión 2.3.2. Una vez que cambié groupD de hsqldb a org.hsqldb, todo comenzó a funcionar.


La otra posibilidad es importar todas las dependencias del POM padre:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <version>2.4.0</version> <dependencies> <dependency> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> </dependency> ... </dependencies> ... </plugin>

No es la solución más hermosa, pero funciona :-)


Para que un POM padre pueda controlar qué versiones de complemento utiliza el niño, debe declarar el <plugin> en una sección <pluginManagement> del POM principal.

Usted definió com.google.gwt:gwt-user como una <dependency> en la sección <dependencyManagement> .

No estoy seguro de si tiene la intención de usar gwt-user como un complemento o como una dependencia, pero debe aparecer como la misma entidad en ambos para que funcione la herencia.


Según los siguientes enlaces, parece que no es posible:

Aquí hay una solución alternativa que encontré, y quería compartirla con todos, en caso de que otras personas tuvieran el mismo problema:

En mi raíz pom, he definido una propiedad, una gestión de dependencias y una administración de complementos:

<properties> <gwtVersion>2.4.0</gwtVersion> <gwtMavenPluginVersion>2.4.0</gwtMavenPluginVersion> </properties> <dependencyManagement> <dependencies> ... <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> <version>${gwtVersion}</version> </dependency> ... <dependencies> <dependencyManagement> <build> <pluginManagement> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> <version>${gwtMavenPluginVersion}</version> <dependencies> <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-user</artifactId> <version>${gwtVersion}</version> </dependency> ... </dependencies> ... </plugins> ... </pluginManagement> </build>

Y en mi pom hijo, usando la relación proporcionada por la administración de plugins (ver Maven2 - problema con pluginManagement y la relación padre-hijo ), simplemente declaro la dependencia del plugin:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>gwt-maven-plugin</artifactId> </plugin>

Ahora, si cambio la versión en las propiedades, está afectando automáticamente todas las dependencias directas y las dependencias de los complementos.