50

バックグラウンド

Apache Maven 3.1.0 と Java 1.7 のクリーン インストールを使用して、ローカルの Maven リポジトリに Java ライブラリを追加しようとしています。Java アーカイブ ファイルを追加する方法は次のとおりです。

mvn install:install-file \
  -DgroupId=net.sourceforge.ant4x \
  -DartifactId=ant4x \
  -Dversion=0.3.0 \
  -Dfile=ant4x-0.3.0.jar \
  -Dpackaging=jar

これにより、次のディレクトリ構造が作成されました。

$HOME/.m2/repository/net/sourceforge/ant4x/
├── 0.3.0
│   ├── ant4x-0.3.0.jar.lastUpdated
│   └── ant4x-0.3.0.pom.lastUpdated
└── ant4x
    ├── 0.3.0
    │   ├── ant4x-0.3.0.jar
    │   ├── ant4x-0.3.0.pom
    │   └── _remote.repositories
    └── maven-metadata-local.xml

プロジェクトのpom.xmlファイルは、次のように依存プロジェクト (上のツリー) を参照します。

<properties>
  <java-version>1.5</java-version>
  <net.sourceforge.ant4x-version>0.3.0</net.sourceforge.ant4x-version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
<dependency>
  <groupId>net.sourceforge</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

問題

を実行した後mvn compile、次のエラーが返されました ( Pastebin の完全なログ):

[ERROR] Failed to execute goal on project ant4docbook: Could not resolve dependencies for project net.sourceforge:ant4docbook:jar:0.6-SNAPSHOT: Failure to find net.sourceforge:ant4x:jar:0.3.0 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]

ドキュメントには、存在する可能性のある多くの問題が記載されていますが、これらのどれも当てはまらないようです。

アイデア

ドキュメントに従って、次のことを試しました。

  1. デフォルト設定を Maven のユーザーのホーム ディレクトリにコピーします。
    cp /opt/apache-maven-3.1.0/conf/settings.xml $HOME/.m2/.
  2. ユーザーの settings.xml ファイルを編集します。
  3. ローカル リポジトリの値を更新します。
    ${user.home}/.m2/リポジトリ
  4. ファイルを保存します。

次のコマンドも試しました。

mvn -U
mvn clear -U

Maven 3.0.5 を使用してみましたが、これも失敗しました。

質問

まだダウンロードできないライブラリを探すのではなく、Maven にローカル バージョンのライブラリを使用させるにはどうすればよいでしょうか?

関連している

問題を解決しなかった関連する質問と情報:

4

2 に答える 2

18

変化する:

<!-- ANT4X -->
<dependency>
  <groupId>net.sourceforge</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

に:

<!-- ANT4X -->
<dependency>
  <groupId>net.sourceforge.ant4x</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

groupIdnet.sourceforge間違っていました。正しい値はnet.sourceforge.ant4xです。

于 2013-09-11T03:36:36.980 に答える
3

スコープ<scope>provided</scope>は、実行時に jar が使用可能になることを示す機会を提供するため、バンドルしないでください。コンパイル時に必要ないという意味ではありません。したがって、maven はそれをダウンロードしようとします。

今思うと、以下の Maven アーティファクトはまったく存在しません。Googleで検索してみましたが、見つかりません。したがって、この問題が発生しています。

に変更groupId<groupId>net.sourceforge.ant4x</groupId>て、最新の jar を取得します。

<dependency>
  <groupId>net.sourceforge.ant4x</groupId>
  <artifactId>ant4x</artifactId>
  <version>${net.sourceforge.ant4x-version}</version>
  <scope>provided</scope>
</dependency>

この問題の別の解決策は次のとおりです。

  1. 独自の Maven リポジトリを実行します。
  2. ジャーをダウンロードする
  3. jar をリポジトリにインストールします。
  4. pom.xml に次のようなコードを追加します。

http://localhost/repoはローカル リポジトリの URL です。

<repositories>
    <repository>
        <id>wmc-central</id>
        <url>http://localhost/repo</url>
    </repository>
    <-- Other repository config ... -->
</repositories>
于 2013-09-11T03:37:37.643 に答える