如何将本地.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服务器上也是这样做的。