0

私はMavenのスターターです。Bitbucket から Java Maven プロジェクトを取得しました。プロジェクトをコンパイルすると、Eclipse は「8/6/12 1:39:05 PM EST: Missing artifact com.tinkerpop.blueprints:blueprints-core:jar:1.0:compile」と言った:

Maven コンソール:

8/6/12 1:39:03 PM EST: Missing artifact com.tinkerpop.blueprints:blueprints-core:jar:1.0:compile
8/6/12 1:39:05 PM EST: Missing artifact com.tinkerpop.blueprints:blueprints-core:jar:1.0:compile

しかし、pom.xml ファイルを確認すると、依存関係リストに既に存在し、Type フィールドと Scope フィールドのみが空です。エラーを見て、この依存関係を自分で追加しようとしました。そして、それは次のように示されました: ここに画像の説明を入力 #1 の質問は、なぜ 1.0 バージョンの場合、blueprints-core には .jar ファイルではなく .pom ファイルしかないのですか? これは、リモート リポジトリで 1.0 バージョンが提供されなくなったことを意味しますか? (このブループリント フレームワークの 2.0 バージョンではなく、1.0 バージョンでプロジェクトの返信のコードを見つけました)

#2 の質問は、Maven が追加された依存関係の jar ファイルを自動的にダウンロードしないのはどのような状況ですか?

これは元の 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-4.0.0.xsd">
    <parent>
        <groupId>edu.qut.cs</groupId>
        <artifactId>qut-recommender</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../qut-recommender/pom.xml</relativePath>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>rcmd-common</artifactId>
    <packaging>jar</packaging>
    <name>QUT Recommender Common Library and Utilty</name>

    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>11.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>2.7.2</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.mahout</groupId>
            <artifactId>mahout-ext</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>jgrapht</groupId>
            <artifactId>jgrapht</artifactId>
            <version>0.7.3</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.tinkerpop.blueprints</groupId>
            <artifactId>blueprints-core</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>   
    </dependencies>

</project>

1.0版のPOMとJarファイルが存在します。以下の画像は「C:\Users\n8275441.m2\repository\com\tinkerpop\blueprints」フォルダ内のディレクトリとファイルです。ところで、このプロジェクトを Bitbucket リポジトリから取得しました。それらの 1.0 バージョン ファイルが Bitbuckdet のプロジェクトに付属していた可能性はありますか? ここに画像の説明を入力

4

2 に答える 2

1

Maven Central が提供するものを知りたい場合は、mvnrepository.comがあなたの友達です。

この場合、1.0 バージョンはありません: http://mvnrepository.com/artifact/com.tinkerpop.blueprints/blueprints-core

これは、m2e がなぜ POM ファイルを報告するのかという興味深い疑問につながります。POM ファイルが実際に存在するかどうか、ハードディスクを確認することをお勧めします。あなたはそれを見つけることができます(または見つけられません)C:\Users\n8275441\.m2\repository\com\tinkerpop\blueprints\1.0\blueprints-core\

質問 2 について: Maven (および m2e も) は、リリース (つまりSNAPSHOT、バージョンに含まれていないもの) を 1 回だけダウンロードしようとします。ダウンロードが失敗した場合、Maven はそれを認識し、アップストリーム リポジトリ (Maven Central など) が Maven ルールに注意を払っていると想定するため、再試行しません (したがって、リポジトリに何かがない場合、明日はありません)。 .

スナップショットの場合、Maven は 1 日に 1 回ダウンロードを試み、最新の状態を維持することと、ダウンロードを待つ時間を無駄にしないこととのバランスをとります。

于 2012-08-06T08:12:01.987 に答える
1

あなたの情報に基づいて、maven centralをチェックした後、問題は選択したバージョンに基づいています。Maven Central には、バージョン 1.2、2.0.0、および 2.1.0 のみが含まれており、バージョン 1.0 は含まれていません。さらに、pom のようにスコープなしで依存関係が指定されている場合:

<dependency>
  <groupId>com.tinkerpop.blueprints</groupId>
  <artifactId>blueprints-core</artifactId>
  <version>1.0</version>
</dependency>

これは、「コンパイル」であるデフォルトのスコープを意味します(構成よりも規則の意味で)。問題を解決するバージョンを 2.0.0 または 2.1.0 に変更することをお勧めします。そのようなプロジェクトのコンパイルを確認する場合は、Eclipse ではなくコマンド ラインで最初に試すことをお勧めします。

于 2012-08-06T07:28:00.257 に答える