Подтвердить что ты не робот

Отсутствует артефакт com.sun.jdmk: jmxtools: jar: 1.2.1

Я создал простой проект из maven-achetype-quickstart в Eclipse Indigo, затем я пошел в pom.xml gui editor и на вкладке зависимостей добавлена ​​зависимость 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 строка 2 Проблема зависимости Maven

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

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

4b9b3361

Ответ 1

Он больше не включается из-за проблем с лицензированием, если я правильно помню. Если вам не нужна функция 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>

Ответ 2

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

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

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

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

Ответ 4

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

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

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