現在、Mavenの代わりにGradleをテストしています。私のプロジェクトには、どの(Maven)リポジトリでも利用できないサードパーティのjarファイルがいくつかあります。私の問題は、これらのjarファイルをローカルの.gradleリポジトリにインストールするためにどのように管理できるかということです。(可能であれば、Gradleは独立して実行する必要があるため、ローカルのMavenリポジトリーは使用しません。)現時点では、jarが欠落しているため、多くの例外が発生します。Mavenでは、installコマンドを実行するだけで非常に簡単です。しかし、Mavenのインストールコマンドに似たものをGoogleで検索しても成功しませんでした。誰かアイデアはありますか?
6 に答える
ファイル システムの JAR 依存関係を次のように含めることができます。
dependencies {
runtime files('libs/a.jar', 'libs/b.jar')
runtime fileTree(dir: 'libs', include: '*.jar')
}
compile/testCompile/etc のランタイムを変更できます。
より包括的な回答が、 http: //gradle.1045684.n5.nabble.com/Gradle-Make-a-3rd-party-jar-available-to-local-gradle-repository-の Adam Murdoch によるメーリング リストで提供されました。 td1431953.html
2010 年 4 月の時点で、~/.gradle リポジトリに新しい jar ファイルを追加する簡単な方法はありませんでした。変わったかどうかは現在調査中です。
2014 年 10 月現在、これはまだ当てはまります。gradle は jarfile の md5 チェックサムを実行するため、単純にダウンロードして .gradle/caches の下のディレクトリに配置することはできず、gradle はそうしません。ローカルファイルを取得してそのファイルをキャッシュにプッシュできるタスクがあることがわかります。
Adam Murdoch の投稿からオプション (1) を使用 (既にリンクされています: http://gradle.1045684.n5.nabble.com/Gradle-Make-a-3rd-party-jar-available-to-local-gradle-repository -td1431953.html ) gradle-1.3 を使用すると、うまく動作します!
ここで彼のコメント:
- jar をローカル ディレクトリにコピーし、flatDir() リポジトリを使用してそこから使用します。たとえば、それらを $projectDir/lib にコピーし、ビルド ファイルで次のようにします。
リポジトリ { flatDir(dirs: 'lib') }
lib ディレクトリ内のファイルは、name-version-classifier.extension という名前付けスキームに従う必要があります。ここで、バージョンと分類子はオプションです。したがって、たとえば、groovy-1.7.0.jar または groovy.jar と呼ぶことができます。
次に、依存関係を通常どおり宣言するだけです。
依存関係 { コンパイル 'groovy:groovy:1.7.0' }
もう少し詳細な flatDir() リポジトリがあります: http://gradle.org/0.9-preview-1/docs/userguide/dependency_management.html#sec:flat_dir_resolver
- 上記と同様ですが、flatDir() の代わりに ivy リゾルバーを使用します。これは上記とほぼ同じですが、名前付けと場所に関する限り、より多くのオプションを使用できます。
http://gradle.org/0.9-preview-1/docs/userguide/dependency_management.html#sub:more_about_ivy_resolversに詳細があり ます。
- 依存関係を宣言することを気にしないでください。jar をどこかのローカル ディレクトリにコピーし、ファイルの依存関係を追加するだけです。たとえば、jar が $projectDir/lib にある場合:
dependencies { compile fileTree('lib') // これには、コンパイル クラスパスの 'lib' の下にあるすべてのファイルが含まれます }
詳細: http://gradle.org/0.9-preview-1/docs/userguide/dependency_management.html#N12EAD
- maven install を使用して依存関係をローカルの Maven キャッシュにインストールし、Maven キャッシュをリポジトリとして使用します。
リポジトリ { mavenRepo(urls: new File(System.properties['user.home'], '.m2/repository').toURI().toURL()) }
gradle リポジトリが flatDir タイプであると仮定すると、myjar-1.0.jar の形式でそこにファイルをコピーし、バージョン 1.0 の myjar として解決できるはずです。
ローカルの Maven リポジトリにアクセスするために Gradle が Maven を実行する必要がある理由がわかりません。Maven リポジトリを定義するだけで、依存関係が解決されるはずです。gradle upload
必要に応じて、ローカルまたはリモートの Maven リポジトリーに jar をプッシュするために使用できます。その場合、maven を実行します。
私はこのようなものがうまくいくはずだと思います:
dependencies {
files('yourfile.jar')
}
それはあなたのために働きますか?