如何将本地.jar文件依赖项添加到build.gradle文件?
所以我试图将我的本地.jar文件依赖项添加到我的build.gradle文件中:
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') }
你可以看到我把.jar文件添加到referencedLibraries文件夹中: https : //github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries
但问题是,当我运行命令:命令行上的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旁边(不是应用程序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依赖关系的相对path如下:
dependencies { compile files('libs/something_local.jar') }
你也可以做到这一点,这将包括本地存储库中的所有JAR。 这样你就不必每次都指定它。
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) }
接受的答案是好的,但是,我将需要在我的多项目Gradle构build中使用相同的第三方Java库的各种库configuration。
将' $ rootProject.projectDir '添加到' allprojects '闭包中的' dir 'path元素意味着每个子项目引用相同的' libs '目录,而不是该子项目的本地版本:
//gradle.build snippet allprojects { ... repositories { //All sub-projects will now refer to the same 'libs' directory flatDir { dirs "$rootProject.projectDir/libs" } mavenCentral() } ... }
由Quizzie编辑:改变“$ {rootProject.projectDir}”为“$ rootProject.projectDir”(工作在最新的Gradle版本)。
一个简单的方法来做到这一点
compile fileTree(include: ['*.jar'], dir: 'libs')
它会编译你的libs目录中的所有.jar文件。
您可以尝试重用您的本地Maven仓库Gradle:
-
将jar安装到你的本地Maven仓库中:
mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar
-
检查你的jar是否安装到你的
~/.m2/
local Maven仓库中 -
在您的
build.gradle
文件中启用您的本地Maven仓库:储存库{
mavenCentral()
mavenLocal()}
依赖{
编译(“com.company:utility:0.0.1”)
}
- 现在你应该在你的项目中启用jar来编译
我无法通过https://stackoverflow.com/a/20956456/1019307得到上面的build议。; 这虽然为我工作。 对于存储在项目根目录下的libs/
目录中的文件secondstring-20030401.jar
:
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'
以下为我工作:
compile fileTree(dir: 'libs', include: '*.jar')
请参阅Gradle文档 。
这个问题已经得到了详细的回答。 我仍然想添加一些对我来说似乎非常令人惊讶的东西:
“gradle dependencies”任务不会列出任何文件依赖关系。 即使你可能这样认为,因为它们已经在“依赖”块中被指定了。
所以不要依赖这个输出来检查你引用的本地lib文件是否工作正常。
Goto File – > Project Structure – > Modules – > app – > Dependencies Tab – >点击+(button) – >selectFile Dependency – >在lib文件夹中selectjar文件
这个步骤会自动添加你的依赖到gralde
很简单
最好的办法是把它添加到build.gradle文件中,然后点击sync选项
dependency{ compile files('path.jar') }
为我工作的解决scheme是在build.gradle文件中使用fileTree。 将需要添加的.jar保存为libs文件夹中的依赖项。 在build.gradle中给出下面的代码块:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) }
其他方式:
在树视图中添加库。 右键单击这个。 select菜单“添加为图书馆”。 出现一个对话框,让你select模块。 好的,它完成了。
如果使用持续集成,请小心,必须将您的库添加到构build服务器上的相同path中。
出于这个原因,我宁愿将jar添加到本地存储库,当然,在构build服务器上也是这样做的。
- 自动增加带有gradle额外属性的VersionCode
- 错误:任务':ProjectName:mergeDebugResources'的执行失败。 >嘎吱嘎吱的Cruncher *一些文件*失败,看到日志
- java.lang.NullPointerException(无错误消息)
- Android Studio更新0.5.3 – 未find平台“android-19”
- 无法parsing符号“AndroidJUnit4”
- Jacoco与Gradle 0.10.0:远程对象不存在
- 如何使用Gradle运行JUnittesting?
- 如何在android studio中启用Jack(Java Android编译器工具包)
- Gradle错误:任务执行失败':app:processDebugGoogleServices'