Gradle 将本地 jar 复制到缓存中

标签 gradle build.gradle

我需要一些帮助来理解为什么我的 build.gradle 不会将本地引用的 jar 复制到它的缓存中。在 Windows 上,我希望在 C:\Users\myusername .gradle 中看到 jar,并且确实存在其他 JAR。

我无法在 IntelliJ 中导入此 JAR,因为它找不到它。

附带问题:有人知道如何调试 Gradle 的 DSL 吗?我设置了远程调试,而 IntelliJ 从未达到我的断点。它上面没有复选框,所以我猜 IDE 不认为它是代码。

有几件事对我来说没有意义:

 1. gradle dependencies --configuration compile

  \--- com.google.guava:guava:23.5-jre
     +--- com.google.code.findbugs:jsr305:1.3.9
     ....

  MY_JAR_1.0.1.jar is not present. 

 2. gradle copyDependencies - this task finds and copies it.
    task copyDependencies(type: Copy) {
        from configurations.compile
        into 'dependencies'
    }

 3. This task also finds my jar. 
    task listcompile << {
        configurations.compile.each { File file -> println file.name }
    }

Why does #1 not find it?

    apply plugin: 'java'

    repositories {
        mavenCentral()
        //flatDir {
        //    dirs 'customlibs'
        //}
    }

    dependencies {
        compile group: 'com.google.guava', name: 'guava', version: '23.5-jre'
        compile files('customlibs/MY_JAR_1.0.1.jar')
    }

    task listcompile << {
        configurations.compile.each { File file -> println file.name }
    }

    // copy all dependencies into this folder
    task copyDependencies(type: Copy) {
        from configurations.compile
        into 'dependencies'
    }

最佳答案

看来Gradle的dependencies任务将仅显示具有已定义 group:name:version 坐标的模块。您正在直接添加一个文件,没有关联的标识符。

您可以做的是添加一个平面目录存储库并将您的自定义 JAR 声明为普通依赖项,如下所示:

repositories {
    flatDir {
        dirs 'customlibs'
    }
}

dependencies {
    compile ':MY_JAR:1.0.1'
}

您需要重命名 JAR 以使其符合 Maven/Gradle 的命名约定,即 MY_NAME-1.0.1.jar(用连字符替换最后一个下划线)。

关于Gradle 将本地 jar 复制到缓存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49969803/

相关文章:

java - 创建简单的 Intellij java gradle 项目时未创建 src 文件夹

Android Instant Run Gradle 实验性插件

gradle - gradle build编码韩文字母

android - 在 com.android.build.gradle.internal.api.ApplicationVariantImpl_Decorated 上找不到属性 'packageApplication'

gradle - Gradle:使用本地AND仓库中的依赖

android - 从模块中的build.gradle中删除项目根目录中的文件夹

plugins - Gradle 中的全局插件

Android 库拒绝创建 R.java,除非构建为 com.android.application

android - 无法为类型com.android.build.gradle.internal.dsl.NdkOptions的对象获取未知属性 'arm64-v8a'

android - 找不到Gradle DSL方法 'android()'错误android studio