web-dev-qa-db-ja.com

プロジェクトのPOMがありません、依存情報が利用できません

バックグラウンド

Apache Maven 3.1.0のクリーンインストールとJava 1.7を使用して、JavaライブラリをローカルMavenリポジトリに追加しようとしています。 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]

documentation は、存在する可能性のある多くの問題を示していますが、これらのいずれも当てはまらないようです。

アイデア

ドキュメントに従って、私は次を試しました:

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

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

mvn -U
mvn clear -U

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

質問

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

関連する

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

44
Dave Jarvis

変化する:

<!-- 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>

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

17
Dave Jarvis

スコープ<scope>provided</scope>を使用すると、jarが実行時に利用可能になることを伝える機会が与えられるため、バンドルしないでください。コンパイル時に必要ないという意味ではないため、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. jarをダウンロードします
  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>
3