Gradle将本地jar复制到缓存中

时间:2018-04-22 19:17:36

标签: 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'
    }

1 个答案:

答案 0 :(得分:1)

似乎Gradle的dependencies任务只显示具有已定义组的模块:name:version coordinate。您正在直接添加文件,没有关联的标识符。

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

repositories {
    flatDir {
        dirs 'customlibs'
    }
}

dependencies {
    compile ':MY_JAR:1.0.1'
}

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