web-dev-qa-db-fra.com

Artefact manquant com.Sun.jdmk: jmxtools: jar: 1.2.1

J'ai créé un projet simple à partir de maven-achetype-quickstart sous Eclipse Indigo, puis je suis allé dans l'éditeur gui pom.xml et, dans l'onglet Dépendances, ajout de la dépendance log4j par recherche dans la boîte de dialogue appropriée. Maintenant, mon pom.xml ressemble à

<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 dit que mon POM a beaucoup de problèmes comme 

Artefact manquant javax.jms: jms: jar: 1.1 pom.xml/Test_Maven_03 ligne 2 Problème de dépendance Maven

Qu'est-ce que cela signifie et comment voir la fonctionnalité maven du téléchargement automatique de fichiers jar. 

EDIT 1 Si je sélectionne log4j 1.2.16 au lieu de 1.2.15, j'obtiens une autre erreur: Missing artifact log4j:log4j:bundle:1.2.16. Je ne vois donc pas de gestion automatique des pots.

47
Suzan Cioc

Il n'est plus inclus en raison de problèmes de licence, si mes souvenirs sont bons. Si vous n'avez pas besoin de la fonctionnalité jms, vous pouvez l'exclure de la dépendance 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>
98
Sbhklr

Changez la version de log4j en 1.2.16.

Les métadonnées de 1.2.15 sont incorrectes, comme vous l'avez découvert, car les dépendances sont absentes du référentiel central. Cependant, il existe une politique consistant à ne pas modifier les artefacts ou les métadonnées dans le référentiel maven central, car cela peut rendre les générations non répétables. C'est-à-dire qu'une construction peut se comporter différemment si un artefact ou ses métadonnées sont modifiés.

Le raisonnement est qu'il vaut mieux contourner les mauvaises métadonnées que de générer des constructions non reproductibles.

Il est bien sûr préférable que les responsables de projet fassent plus attention aux métadonnées qu’ils chargent dans le fichier central.

42
Martin Ellis

Utilisez Log4J 1.2.16 (celui auquel j'ai lié dans votre question précédente) ; il n’a pas la dépendance JMX plus ancienne et l’obtient plutôt de Geronimo.

11
Dave Newton

Les réponses ci-dessus (à l'exclusion de JMX) conviennent, tant que vous n'avez besoin d'aucune des dépendances JMX. Cependant, vous ne pourrez jamais télécharger les fichiers .jar des dépendances JMX à partir d'un référentiel Maven standard. Pour citer Jörg Schaible-3 sur nabble.com :

Ceci est normal et le restera, car Sun/Oracle n’a jamais accepté les droits de distribution de ces artefacts en tant que téléchargements séparés. Tu vas avoir pour les télécharger depuis Oracle, en acceptant leur licence, et les ajouter à un fichier gestionnaire de référentiel local.

Par conséquent, si vous souhaitez utiliser JMX, vous devez télécharger le dossier Zip jmx correspondant à partir de site Web d'Oracle .

1
gladclef