首页 文章

如何将本地.jar文件依赖项添加到build.gradle文件?

提问于
浏览
452

所以我试图将我的本地.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我得到以下错误:

error: package com.google.gson does not exist
import com.google.gson.Gson;

这是我的整个回购:https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1

14 回答

  • 368

    对我有用的解决方案是在build.gradle文件中使用fileTree . 保留需要在libs文件夹中添加为依赖项的.jar . 在build.gradle中的dependdenices块中给出以下代码:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
    }
    
  • 7

    以下为我工作:

    compile fileTree(dir: 'libs', include: '*.jar')
    

    请参阅Gradle Documentation .

  • 5

    接受的答案是好的,但是,我需要在我的多项目Gradle构建中使用相同的第三方Java库中的各种库配置 .

    添加' $rootProject.projectDir ' to the ' dir ' path element within my ' allprojects ' closure meant each sub-project referenced the same ' 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:将“$ ”更改为“$ rootProject.projectDir”(适用于最新的Gradle版本) .

  • 1

    一个简单的方法是

    compile fileTree(include: ['*.jar'], dir: 'libs')
    

    它将编译App中libs目录中的所有.jar文件 .

  • 4

    您也可以执行此操作,其中包括本地存储库中的所有JAR . 这样您就不必每次都指定它 .

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
    }
    
  • 12

    您可以尝试重用Gradle的本地Maven存储库:

    • 将jar安装到本地Maven存储库中:

    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")  
    }
    
    • 现在您应该在项目中启用jar进行编译
  • -1

    我无法在https://stackoverflow.com/a/20956456/1019307上面得到上述建议 . 这虽然对我有用 . 对于我存储在项目根目录的 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'
    
  • 25

    其他方式:

    在树视图中添加库 . 右键单击这个 . 选择菜单“添加为库” . 出现一个对话框,让您选择模块 . 好的,它已经完成了 .

  • 5

    如果你真的需要从本地目录中获取.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'
    }
    
  • 266

    最好的方法是在build.gradle文件中添加它并点击同步选项

    dependency{
        compile files('path.jar')
    }
    
  • 516

    转到文件 - >项目结构 - >模块 - >应用程序 - >依赖项选项卡 - >单击(按钮) - >选择文件依赖项 - >在lib文件夹中选择jar文件

    此步骤将自动将您的依赖项添加到gralde

    非常简单

  • 34

    根据the documentation,使用本地jar依赖项的相对路径,如下所示:

    dependencies {
        compile files('libs/something_local.jar')
    }
    
  • -1

    如果使用持续集成,请务必小心,必须在构建服务器上的相同路径中添加库 .

    出于这个原因,我宁愿将jar添加到本地存储库,当然,也可以在构建服务器上执行相同操作 .

  • 24

    该问题已经得到了详细的答复 . 我还想添加一些对我来说非常令人惊讶的东西:

    “gradle dependencies”任务不会列出任何文件依赖项 . 即使你可能这么认为,因为它们已经在“依赖”块中被指定了 .

    所以不要依赖于它的输出来检查你引用的本地lib文件是否正常工作 .

相关问题