java eclipse maven dependency-management pom.xml

java - Artefacto perdido com.sun.jdmk: jmxtools: jar: 1.2.1



eclipse maven (4)

He creado un proyecto simple de maven-achetype-quickstart en Eclipse Indigo, luego fui al editor de pom.xml gui y en la pestaña de dependencias agregué la dependencia log4j buscando en el cuadro de diálogo correspondiente. Ahora mi pom.xml parece

<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 xsd/maven-.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mygroup</groupId> <artifactId>Test_Maven_03</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>Test_Maven_03</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> </dependency> </dependencies> </dependencyManagement> </project>

Eclipse dice que mi POM tiene muchos problemas como

Artefacto perdido javax.jms: jms: jar: 1.1 pom.xml / Test_Maven_03 línea 2 Maven Dependency Problem

¿Qué significa y cómo ver la función de maven de descarga de jar automático?

EDITAR 1 Si selecciono log4j 1.2.16 en lugar de 1.2.15, aparece otro error: Missing artifact log4j:log4j:bundle:1.2.16 . Por lo tanto, no veo ninguna gestión de jar automática.


Cambie la versión de log4j a 1.2.16.

Los metadatos de 1.2.15 son incorrectos, como ha descubierto, porque las dependencias no se encuentran en el repositorio central. Sin embargo, existe una política de no cambiar artefactos o metadatos en el repositorio central de maven, ya que esto puede llevar a que las construcciones sean irrepetibles. Es decir, una compilación podría comportarse de manera diferente si un artefacto o sus metadatos cambiaran.

El razonamiento es que es mejor trabajar con metadatos incorrectos que generar compilaciones irreproducibles.

Es mejor, por supuesto, si los mantenedores de proyectos son más cuidadosos con los metadatos que cargan en central.


Las respuestas anteriores ( excluyendo JMX ) están bien, siempre y cuando no necesite ninguna de las dependencias JMX. Sin embargo, nunca podrá descargar los archivos .jar de las dependencias JMX de un repositorio maven estándar. Para citar a Jörg Schaible-3 en nabble.com :

Esto es normal y se mantendrá así porque Sun / Oracle nunca otorgó derechos de distribución para esos artefactos como descargas separadas. Tendrá que descargarlos de Oracle, aceptar su licencia y agregarlos a un administrador de repositorio local.

Por lo tanto, si desea utilizar JMX, deberá descargar la carpeta respectiva de jmx zip desde el sitio web de Oracle .



Ya no está incluido debido a problemas de licencia si recuerdo correctamente. Si no necesita la funcionalidad de jms, puede excluir jms de la dependencia de log4j:

<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> </exclusions> </dependency>