2

このプロジェクトをビルドしようとすると:

project_layout = Layout.new
project_layout[:source,:main,:java] = 'src'
project_layout[:source,:test,:java] = 'test'

define 'hausaufgaben', :layout => project_layout do
    project.version = '1.0'
    package :jar
end

このエラーが発生します:

RuntimeError : Unable to download org.apache.ant:ant:jar:1.8.3. No remote repositories defined.

このメッセージから、ビルダーが内部でantを使用していることがわかります(奇妙なことに、ビルドにRakeを使用していると思いました)。クイックスタートはこれについて言及していません。さらに厄介なのは、私がすでにantを持っていることです(1.8.3ではなく1.8.2ですが、それほど大きな違いはないはずです)。奇妙なことに、ビルダーがJavaファイルを見つけられない限り、不満はありません。 (レイアウトをデフォルト値のままにして、これをテストしました)。

実際の質問です。ビルダーがantを見つけることができるリポジトリを追加する必要がありますか、それとも別の方法でこれを行うことができますか

記録のために:私はbuildrをでインストールしjruby -S gem install buildr、それをで実行しましたjruby -S buildr package

4

2 に答える 2

5

Rhettが指摘したように、BuildrはAntを内部で使用してそのタスクの一部を実装し、必要に応じて必要なライブラリをダウンロードしようとします。

私は通常、リモートリポジトリをビルドファイルに登録して、ライブラリがまだローカルにキャッシュされていない場合に、ビルドがライブラリをダウンロードする場所を認識できるようにします。したがって、ビルドの上部に次のものを追加してみてください。

repositories.remote << 'http://repo1.maven.org/maven2'
于 2012-12-09T19:38:09.953 に答える
2

Buildrは、Rakeを使用してタスクの依存関係の評価と実行を行います。ただし、RakeにはJavaプロジェクトを具体的に構築する方法についての知識がありません。Buildrは、サポートするすべてのタスクをrubyで書き直すのではなく、antタスクを使用して独自のタスクの一部を実装します。(私がすぐに思いつくのは、JUnitテストを実行することです。他にもあると思います。)したがって、BuildrにはAntが必要です。

適切なリモートリポジトリを追加するか、ビルドファイルを使用するすべてのマシンのm2キャッシュに正しいバージョンのantjarが含まれていることを確認できます。エラーメッセージのアーティファクトの場合、予想されるパスはです$HOME/.m2/repository/org/apache/ant/ant/1.8.3/ant-1.8.3.jar

Builderがダウンロードしようとする依存関係はantだけではない可能性が高いことに注意してください。リモートリポジトリを定義したくない場合は、依存関係ごとにこの手動解決を行う必要があります。

(ビルドファイルのないディレクトリでbuildrを実行すると、ビルドファイルが生成されることに注意してください。生成されるディレクトリには、適切なリモートリポジトリが設定されます。)

于 2012-12-09T02:13:47.973 に答える