だから私は私のbuild.gradleファイルに私のローカルの.jarファイルの依存関係を追加しようとしました:
apply plugin: 'Java'
sourceSets {
main {
Java {
srcDir 'src/model'
}
}
}
dependencies {
runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
runtime fileTree(dir: 'libs', include: '*.jar')
}
そして、あなたは私がここにreferencedLibrariesフォルダに.jarファイルを追加したことを見ることができます: https://github.com/WalnutiQ/wAlnut/tree/version - 2.3.1/referenceLibraries
しかし問題は、コマンドラインでgradle buildコマンドを実行すると、次のようなエラーが表示されることです。
error: package com.google.gson does not exist
import com.google.gson.Gson;
ここに私の全体のレポがあります: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1
あなたが本当にローカルディレクトリからその.jarを取る必要があるなら、
あなたのモジュールgradleの隣に追加します(app gradleファイルではありません):
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile name: 'gson-2.2.4'
}
しかし、実際のMavenリポジトリの標準の.jarなので、これを試してみませんか?
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.code.gson:gson:2.2.4'
}
ドキュメント に従って、次のようにローカルjar依存関係に相対パスを使用します。
dependencies {
compile files('libs/something_local.jar')
}
ローカルリポジトリにあるすべてのJARを含むようにすることもできます。これにより、毎回指定する必要がなくなります。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
受け入れられた答えは良いです、しかし、私は私のマルチプロジェクトGradleビルドの中で同じサードパーティJavaライブラリを使うために様々なライブラリ設定を必要としたでしょう。
' allprojects 'クロージャ内の ' dir ' path要素に ' $ rootProject.projectDir 'を追加すると、各サブプロジェクトが同じ ' libs 'ディレクトリを参照することになります。および not そのサブプロジェクトのローカルバージョン。
//gradle.build snippet
allprojects {
...
repositories {
//All sub-projects will now refer to the same 'libs' directory
flatDir {
dirs "$rootProject.projectDir/libs"
}
mavenCentral()
}
...
}
QuizzieによるEDIT: "$ {rootProject.projectDir}"を "$ rootProject.projectDir"に変更しました(最新のGradleバージョンで動作します)。
ローカルのMavenリポジトリをGradle用に再利用してみることができます。
ローカルのMavenリポジトリにjarをインストールします。
mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar
Jarファイルが~/.m2/
ローカルのMavenリポジトリにインストールされていることを確認してください。
build.gradle
ファイルでローカルのMavenリポジトリを有効にします。
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile ("com.company:utility:0.0.1")
}
これを行う簡単な方法は、
compile fileTree(include: ['*.jar'], dir: 'libs')
appのlibsディレクトリにあるすべての.jarファイルをコンパイルします。
私は https://stackoverflow.com/a/20956456/1019307 で上記の提案を得ることができませんでした。これは私にとってはうまくいきました。プロジェクトのルートにあるsecondstring-20030401.jar
ディレクトリに格納したファイルlibs/
の場合:
repositories {
mavenCentral()
// Not everything is available in a Maven/Gradle repository. Use a local 'libs/' directory for these.
flatDir {
dirs 'libs'
}
}
...
compile name: 'secondstring-20030401'
質問はすでに詳細に回答されています。私はまだ私にとって非常に驚くように思える何かを追加したいです。
"gradle dependencies"タスクはファイルの依存関係をリストしません。あなたはそう思うかもしれませんが、結局、それらは "dependencies"ブロックで指定されているので。
そのため、参照しているローカルのlibファイルが正しく動作しているかどうかを確認するのに、この出力に頼らないでください。
私のために働いた解決策はbuild.gradleファイルのfileTreeの使用法です。依存関係として追加する必要がある.jarをlibsフォルダーに保存します。以下のコードをbuild.gradleのdependenicesブロックに入れます。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
それをする最良の方法はあなたのbuild.gradleファイルにこれを追加して同期オプションを押すことです
dependency{
compile files('path.jar')
}
Kotlin DSLを使っている人のための解決策
これまでに追加された解決策はOPには最適ですが、最初にそれらを変換しない限りKotlin DSLで使用することはできません。 Kotlin DSLを使って自分のビルドにローカルの.JARを追加する方法の例を示します。
dependencies {
compile(files("/path/to/file.jar"))
testCompile(files("/path/to/file.jar"))
testCompile("junit", "junit", "4.12")
}
Windowsを使用している場合は、バックスラッシュをエスケープする必要があります。
...
compile(files("C:\\path\\to\\file.jar"))
...
また、引用符は一重引用符ではなく二重引用符でなければならないことを忘れないでください。
Jarを追加できます:
Gradleの場合、次のコードをbuild.gradle
に入れるだけです。
dependencies {
...
compile fileTree(dir: 'lib', includes: ['suitetalk-*0.jar'])
...
}
mavenの場合は、次の手順に従ってください。
Intellijの場合:[ファイル]-> [プロジェクト構造]-> [モジュール]-> [依存関係]タブ-> [+記号]-> [jarと依存関係]をクリックします。
実行時にJava.lang.NoClassDefFoundError: Could not initialize class
例外が発生した場合、jarの依存関係がインストールされていないため、親プロジェクトにすべての依存関係を追加する必要があることを忘れないでください。
ジャンプ - >プロジェクト構造 - >モジュール - > app - > Dependenciesタブ - > +(ボタン)をクリック - > Select File Dependency - > libフォルダーのjarファイルを選択
このステップは自動的にあなたの依存関係をgraldeに追加します
とてもシンプル