web-dev-qa-db-ja.com

リポジトリにないディレクトリにすべてのMaven依存関係をダウンロードしますか?

バイナリ形式で配布されたライブラリをMavenのみで使用する必要があるため、プロジェクトをMavenに変換し始めましたが、壁に頭をぶつけすぎた後、自分自身を傷つけずに使用することにしました蟻。 jarとその推移的な依存関係のすべてを、選択したディレクトリにMavenでダウンロードしたいので、通常どおり楽しみながらSCMにチェックインし、再び至福の開発者になります。
これを簡単に行う方法はありますか?

116
chubbsondubs

maven依存プラグイン は潜在的に問題を解決できます。

すべてのプロジェクトの依存関係が指定されたpomがある場合、実行する必要があるのは実行するだけです

mvn dependency:copy-dependencies

target/dependenciesフォルダーには、推移性を含むすべての依存関係が含まれています。

追加 以下からのグスタボの答え :依存関係sourcesをダウンロードするには、

mvn dependency:copy-dependencies -Dclassifier=sources

Apache Maven Dependency Plugin doc )を使用します。

242
Raghuram

ivy.xmlファイルを作成して、プロジェクトの依存関係をリストします。

<ivy-module version="2.0">
    <info organisation="org.demo" module="demo"/>
    <configurations defaultconfmapping="default"/>
    <dependencies>
        <dependency org="commons-lang" name="commons-lang" rev="2.6"/>
        ..
    </dependencies>
</ivy-module>

これらのjarおよびそれらの推移的な依存関係のダウンロードは、現在2つの方法のいずれかで実行できます。

コマンドライン

Ivyは コマンドラインプログラム として実行できます。次の例は、ローカルの「lib」ディレクトリにダウンロードします。

Java -jar ivy-2.2.0.jar -ivy ivy.xml -retrieve "lib/[artifact].[ext]"

ANTビルド

ivyは、ANTビルドに統合されている場合に最適に使用されます。次のターゲット例では、jarをローカルのlibディレクトリにダウンロードし、依存関係分析用のHTMLレポートを生成します。

<target name="retrieve" description="Retrieve dependencies locally">
    <ivy:retrieve pattern="${lib.dir}/[artifact].[ext]"/>

    <ivy:report todir="${report.dir}" graph="false"/>
</target>
19
Mark O'Connor

@ Raghuram answerに基づいて、 プロジェクトの依存関係をコピーする に関するチュートリアルを見つけました。

  1. プロジェクトpom.xmlファイルを開き、これを見つけます。

    <project>
      [...]
      <build>
        <plugins>
          ...
        </plugins>
      </build>
      [...]
    </project>
    
  2. <plugins> ... </plugins>を次のものに置き換えるより:

    <plugins>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>false</overWriteSnapshots>
              <overWriteIfNewer>true</overWriteIfNewer>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
    
  3. そして、コマンドラインmvn dependency:copy-dependencies内でmavenを呼び出します

終了後、target/dependencyが存在する現在のディレクトリに対するjarのすべての依存関係内にpom.xmlフォルダーを作成します。

6
user

最後に、Mavenの使用方法を見つけました。 Eclipse内から、新しいMavenプロジェクトを作成します。

Mavenをダウンロードし、アーカイブを抽出し、/binフォルダーをパスに追加します。

mvn -vを実行して、コマンドラインからインストールを検証します(バージョンとJavaインストールパスを出力します)

プロジェクトのルートフォルダー(pom.xmlがある場所)に移動して、次を実行します。

mvn dependency:copy-dependencies

すべてのjarファイルは/target/dependencyにダウンロードされます。

別の出力ディレクトリを設定するには:

mvn dependency:copy-dependencies -DoutputDirectory="c:\temp"

Pom.xmlを変更することにより、すべての依存関係のダウンロードにこのMavenプロジェクトを再利用できるようになりました

ビルドパス->ビルドパスの構成->ライブラリ-> JARの追加により、Javaプロジェクトにjarを追加します。

6
Baked Inhalf

次のコマンドを見つけました

mvn dependency:copy-dependencies -Dclassifier=sources

ここ maven.Apache.org

3
Gustavo

${MAVEN_HOME}/confなどのsettings.xmlディレクトリにいくつかの設定ファイルがあるかどうかを確認してください。これらのファイルは.m2フォルダーの設定を上書きします。そのため、.m2のリポジトリフォルダーは表示または破棄されない可能性があります。

1
MagGGG