web-dev-qa-db-ja.com

アーティファクトcom.Sun.jdmk:jmxtools:jar:1.2.1がありません

Eclipse Indigoの下でmaven-achetype-quickstartから簡単なプロジェクトを作成した後、pom.xml guiエディターに移動し、依存関係タブに依存関係を追加しました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依存関係の問題

それは何を意味し、自動jarダウンロードのMaven機能をどのように見るか。

EDIT 1 1.2.15ではなくlog4j 1.2.16を選択すると、別のエラーが発生します:Missing artifact log4j:log4j:bundle:1.2.16。したがって、自動jar管理はまったくありません。

49
Suzan Cioc

正しく覚えていれば、ライセンスの問題のためにもう含まれていません。 jms機能が必要ない場合は、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>
101
Sbhklr

Log4jのバージョンを1.2.16に変更します。

1.2.15のメタデータは、中央リポジトリから依存関係が欠落しているため、お気付きのとおり、不良です。ただし、中央のMavenリポジトリー内のアーティファクトまたはメタデータを変更しないというポリシーがあります。これにより、ビルドが再現不能になる可能性があるためです。つまり、アーティファクトまたはそのメタデータが変更された場合、ビルドの動作が異なる可能性があります。

理由は、再現性のないビルドを引き起こすよりも、悪いメタデータを回避する方が良いということです。

もちろん、プロジェクトメンテナーがCentralにアップロードするメタデータにもっと注意を払っている方が良いでしょう。

43
Martin Ellis

Log4J 1.2.16(前の質問でリンクしたもの) ;を使用します。古いJMX依存関係はなく、代わりにGeronimoから取得します。

11
Dave Newton

上記の回答(JMXを除く)は、JMX依存関係を必要としない限り問題ありません。ただし、標準のMavenリポジトリからJMX依存関係の.jarファイルをダウンロードすることはできません。引用するには nabble.comのJörgSchaible-

これは正常であり、Sun/Oracleはこれらのアーティファクトの個別のダウンロードとしての配布権を決して付与しないため、そのままです。 Oracleからライセンスをダウンロードしてライセンスを受け入れ、ローカルリポジトリマネージャーに追加する必要があります。

したがって、JMXを使用する場合、それぞれのjmx Zipフォルダーを OracleのWebサイト からダウンロードする必要があります。

1
gladclef