Отсутствует артефакт com.sun.jdmk: jmxtools: jar: 1.2.1 - PullRequest
48 голосов
/ 28 января 2012

Я создал простой проект из maven-achetype-quickstart под Eclipse Indigo, затем я зашел в графический редактор pom.xml и на вкладке зависимостей добавил зависимость 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 много проблем, таких как

Отсутствует артефакт javax.jms: jms: jar: 1.1 pom.xml / Test_Maven_03 line 2 Проблема зависимости Maven

Что это значит и как увидеть maven функцию автоматической загрузки банок.

РЕДАКТИРОВАТЬ 1 Если я выберу log4j 1.2.16 вместо 1.2.15, я получу еще одну ошибку: Missing artifact log4j:log4j:bundle:1.2.16. Поэтому я не вижу автоматического управления банками вообще.

Ответы [ 4 ]

100 голосов
/ 28 января 2012

Больше не включается из-за проблем с лицензированием, если я правильно помню. Если вам не нужна функциональность jms, вы можете исключить jms из зависимости 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>
43 голосов
/ 28 января 2012

Измените версию log4j на 1.2.16.

Метаданные для 1.2.15, как вы обнаружили, неверны, поскольку в центральном репозитории отсутствуют зависимости. Однако в центральном репозитории Maven существует политика, запрещающая изменение артефактов или метаданных, поскольку это может привести к тому, что сборки будут неповторимыми. То есть сборка может вести себя по-другому, если артефакт или его метаданные изменились.

Причина в том, что лучше работать с плохими метаданными, чем вызывать невоспроизводимые сборки.

Лучше, конечно, если сопровождающие проекта будут более осторожны с метаданными, которые они загружают в центральную систему.

11 голосов
/ 28 января 2012

Используйте Log4J 1.2.16 (тот, на который я ссылался в вашем предыдущем вопросе) ; он не имеет более старой зависимости JMX и получает ее от Geronimo.

1 голос
/ 06 сентября 2017

Ответы выше ( за исключением JMX ) в порядке, если вам не нужны какие-либо зависимости JMX. Однако вы никогда не сможете загрузить файлы .jar зависимостей JMX из стандартного репозитория maven. Цитировать Йорг Шейбл-3 на nabble.com :

Это нормально и так будет, потому что Sun / Oracle никогда не давали Права на распространение этих артефактов в виде отдельных загрузок. У вас будет загрузить их из Oracle, приняв их лицензию, и добавить их в менеджер локального хранилища.

Поэтому, если вы хотите использовать JMX, вам необходимо загрузить соответствующую папку jmx zip с веб-сайта Oracle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...