2010-12-31 8 views
13

私たちはビルドプロセスにANTを使用しており、近い将来にこれを変更する計画はありません。一部のライブラリjarをフェッチするためにMavenを使用する

は、の一般的なオープンソースのjarファイル(Log4J、SWT、JFaceなど)を取得してプロジェクトの適切な場所に配置することができます。バージョン管理—は、ホームディレクトリに典型的なMaven-cacheを作成しないといいですか?

答えて

17

いいえ誰でも!

Antを使用している場合、Mavenリポジトリを使用してjarの依存関係をダウンロードする最も良い方法は、IvyをAntに使用することです。それはまさにアイビーのためのものです。

Ivyをインストールし、現在のAntプロジェクトで作業することは簡単です。ローカルのMavenリポジトリとして使用する場合は、NexusとArtifactoryで動作します。

Ivyをご覧ください。それはおそらくまさにあなたが望むものです。

+0

またはantのタスクを作成します。いずれかは、リポジトリからアーティファクトをダウンロードするためにantを使用します。 http://maven.apache.org/ant-tasks/index.html – michael

+0

maven-ant-tasksを使用しないでください。これは廃止予定の非常に古いプロジェクトですが、基本的な解決はしますが、それを超えるものは、 – sloven

4

org.life.java's answerのバリエーションでは、私はmvn installをしません。

代わりに、のpom.xmlに私は、次のビットを追加します。

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>copy-dependencies</goal> 
        </goals> 
        <configuration> 
<outputDirectory>${project.build.directory}/lib</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

は今、あなただけの完全なmvn installよりもはるかに高速である、mvn generate-sourcesを行う必要があり、そしてすべての依存関係はにコピーされます指定されたディレクトリ


オハイオ州btw、それではApache Ivyは約ですか? Mavenの依存関係管理を理解するためにAntを拡張していますか?

+0

1は、Apacheアイビー – Goibniu

+0

のために、私はどちらかのApache Ivyのことは知りません。ここや他のライブラリをそこにコピーすることは可能ですか? – Mot

+1

@mklhmnn私はアイビーを試したことがありません。私は時にはアリを使用しているmavenユーザーです。それ以外の方法ではないので、Ivyの対象読者ではありません。しかし、ここでは機能ページからの引用があります: 'Apache Ivyを使用すると、Apache AntビルドファイルにApache Mavenの依存関係管理機能を持たせることができます。Apache Antビルドファイルは、既にApache Antを使用していて、 Mavenプロジェクトしかし、Apache Ivyはそこに止まらず、さらに多くの素晴らしい機能を提供します! http://ant.apache.org/ivy/features.html –

4

maven-ant-tasksとすることもできます。

特に、そのdependencies antタスク。この設定では、Mavenをインストールする必要はありません。

<?xml version="1.0" encoding="UTF-8"?> 
<project 
    name="download-dependency" 
    basedir="." 
    default="download-dependency" 
    xmlns:artifact="antlib:org.apache.maven.artifact.ant" 
> 
    <target name="download-dependency"> 

    ... define properties ... 

    <taskdef 
     resource="org/apache/maven/artifact/ant/antlib.xml" 
     uri="antlib:org.apache.maven.artifact.ant" 
    /> 

    <artifact:dependencies> 
     <localRepository path="${local-repo.dir}"/> 
     <remoteRepository id="central" url="${repository-uri}"/> 
     <dependency 
     groupId="${groupId}" 
     artifactId="${artifactId}" 
     version="${version}" 
     type="${type}" 
     classifier="${classifier}" 
     scope="runtime" 
     /> 
    </artifact:dependencies> 
    </target> 
</project> 

プロジェクトにチェックインするバイナリはmaven-ant-tasks.jarです。

私たちのプロジェクトでは、(documentation)Mavenリポジトリマネージャを使用して、さまざまなリポジトリへのアクセスを集中管理し、環境固有のバイナリを維持しています。 Nexusのヘルプでは、ちょうど既知のURLから、というタスクを使ってmaven-ant-tasks.jarを取得します。 Nexusを使用する必要はありませんが、開発者のマシンに近いバイナリをキャッシュするため、ビルドの速度が大幅に向上します。

2

アイビーはちょうどこれを行い、 は、それ自体をブートストラップする場合:
http://ant.apache.org/ivy/history/latest-milestone/samples/build.xml

<property name="ivy.install.version" value="2.0.0-beta1"/> 
<property name="ivy.jar.dir" value="lib"/> 
<property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/> 
<target name="resolve" unless="skip.download"> 
    <mkdir dir="${ivy.jar.dir}"/> 
    <echo message="installing ivy..."/> 
    <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" dest="${ivy.jar.file}" usetimestamp="true"/> 
</target> 
関連する問題