缺less工件com.sun.jdmk:jmxtools:jar:1.2.1

我已经从Eclipse Indigo下的maven-achetype-quickstart创build了一个简单的项目,然后我去了pom.xml gui编辑器,并在依赖关系选项卡中通过search在适当的对话框中添加了依赖项log4j 。 现在我的pom.xml看起来像

 <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说我的POM有很多问题

缺less工件javax.jms:jms:jar:1.1 pom.xml / Test_Maven_03第2行Maven依赖关系问题

这是什么意思,以及如何看到自动jar下载的mavenfunction。

编辑1如果我selectlog4j 1.2.16而不是1.2.15,我得到另一个错误: Missing artifact log4j:log4j:bundle:1.2.16 。 所以我看不到任何自动的jarpipe理。

如果我没有记错的话,由于授权问题,不再包含它。 如果您不需要jmsfunction,则可以从log4j依赖项中排除jms:

 <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> 

将log4j的版本更改为1.2.16。

正如您已经发现的,1.2.15的元数据是不好的,因为中央资源库缺less依赖关系。 但是,在中央Maven存储库中存在一个不改变工件或元数据的策略,因为这会导致构build不可重复。 也就是说,如果构件或其元数据改变,构build可能会有不同的performance。

理由是,最好解决不良的元数据,而不是导致不可重复的构build。

当然,如果项目维护人员对他们上传到中心的元数据更加谨慎,那更好。

使用Log4J 1.2.16(我在之前的问题中链接到的那个) ; 它没有旧的JMX依赖关系,而是从Geronimo中获取它。

上面的答案( 不包括JMX )是好的,只要你不需要任何的JMX依赖。 但是,您永远无法从标准的Maven仓库下载JMX依赖关系的.jar文件。 引用nabble.com上的JörgSchaible-3 :

这是正常的,它会保持这种状态,因为Sun / Oracle从未授予这些工件的分发权作为单独的下载。 您将不得不从Oracle下载它们,接受它们的许可证,并将它们添加到本地存储库pipe理器。

因此,如果您要使用JMX,则需要从Oracle网站下载相应的jmx zip文件夹。

Interesting Posts