繁体   English   中英

Gradle传递依赖不起作用?

[英]Gradle transitive dependencies not working?

所以我在这里有一个项目,它有以下build.gradle:

// PLUGINS

plugins {
  id 'java' // or 'groovy' Must be explicitly applied
  id 'com.github.johnrengelman.shadow' version '1.2.2'
}

apply plugin: 'application'
apply plugin: 'java'

// REPOSITORIES & DEPENDENCIES

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'joda-time:joda-time:2.9'
    compile 'com.miglayout:miglayout-swing:5.0'
    compile 'com.dorkbox:SystemTray:1.9'
    compile 'com.dorkbox:SystemTray-Dorkbox-Util:1.9'
    compile 'net.java.dev.jna:jna:4.2.1'
    compile 'org.slf4j:slf4j-simple:1.7.5'
    compile 'commons-cli:commons-cli:1.3.1'
}

// SETTING THE MAIN CLASS

mainClassName = "com.github.tgharib.Program"

jar {
    manifest {
        attributes 'Main-Class': 'com.github.tgharib.Program'
    }
}

目前,遵循这些构建指令编译应用程序就好了。 但是,对于com.dorkbox:SystemTray库,我必须包含SystemTray的传递依赖: net.java.dev.jna:jna org.slf4j:slf4j-simpleorg.slf4j:slf4j-simple 如果我理解正确,Gradle默认会自动包含传递依赖,但是如果我删除compile 'net.java.dev.jna:jna:4.2.1'行,我的程序仍然编译但是无法运行(因为JNA是运行时依赖项)。

我花了大约3个小时试图解决它但我无法解决它。 一个SO用户建议清除缓存,因为它解决了他的问题,但清除缓存并没有解决问题。 我还了解了gradle dependencies命令。 这是输出:

:dependencies

------------------------------------------------------------
Root project
------------------------------------------------------------

archives - Configuration for archive artifacts.
No dependencies

compile - Compile classpath for source set 'main'.
+--- joda-time:joda-time:2.9
+--- com.miglayout:miglayout-swing:5.0
|    \--- com.miglayout:miglayout-core:5.0
+--- com.dorkbox:SystemTray:1.9
|    +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.5
|    \--- net.java.dev.jna:jna:4.2.1
+--- com.dorkbox:SystemTray-Dorkbox-Util:1.9
|    \--- net.java.dev.jna:jna:4.2.1
+--- org.slf4j:slf4j-simple:1.7.5
|    \--- org.slf4j:slf4j-api:1.7.5
\--- commons-cli:commons-cli:1.3.1

default - Configuration for default artifacts.
+--- joda-time:joda-time:2.9
+--- com.miglayout:miglayout-swing:5.0
|    \--- com.miglayout:miglayout-core:5.0
+--- com.dorkbox:SystemTray:1.9
|    +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.5
|    \--- net.java.dev.jna:jna:4.2.1
+--- com.dorkbox:SystemTray-Dorkbox-Util:1.9
|    \--- net.java.dev.jna:jna:4.2.1
+--- org.slf4j:slf4j-simple:1.7.5
|    \--- org.slf4j:slf4j-api:1.7.5
\--- commons-cli:commons-cli:1.3.1

runtime - Runtime classpath for source set 'main'.
+--- joda-time:joda-time:2.9
+--- com.miglayout:miglayout-swing:5.0
|    \--- com.miglayout:miglayout-core:5.0
+--- com.dorkbox:SystemTray:1.9
|    +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.5
|    \--- net.java.dev.jna:jna:4.2.1
+--- com.dorkbox:SystemTray-Dorkbox-Util:1.9
|    \--- net.java.dev.jna:jna:4.2.1
+--- org.slf4j:slf4j-simple:1.7.5
|    \--- org.slf4j:slf4j-api:1.7.5
\--- commons-cli:commons-cli:1.3.1

shadow
No dependencies

testCompile - Compile classpath for source set 'test'.
+--- joda-time:joda-time:2.9
+--- com.miglayout:miglayout-swing:5.0
|    \--- com.miglayout:miglayout-core:5.0
+--- com.dorkbox:SystemTray:1.9
|    +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.5
|    \--- net.java.dev.jna:jna:4.2.1
+--- com.dorkbox:SystemTray-Dorkbox-Util:1.9
|    \--- net.java.dev.jna:jna:4.2.1
+--- org.slf4j:slf4j-simple:1.7.5
|    \--- org.slf4j:slf4j-api:1.7.5
\--- commons-cli:commons-cli:1.3.1

testRuntime - Runtime classpath for source set 'test'.
+--- joda-time:joda-time:2.9
+--- com.miglayout:miglayout-swing:5.0
|    \--- com.miglayout:miglayout-core:5.0
+--- com.dorkbox:SystemTray:1.9
|    +--- org.slf4j:slf4j-api:1.6.4 -> 1.7.5
|    \--- net.java.dev.jna:jna:4.2.1
+--- com.dorkbox:SystemTray-Dorkbox-Util:1.9
|    \--- net.java.dev.jna:jna:4.2.1
+--- org.slf4j:slf4j-simple:1.7.5
|    \--- org.slf4j:slf4j-api:1.7.5
\--- commons-cli:commons-cli:1.3.1

(*) - dependencies omitted (listed previously)

BUILD SUCCESSFUL

Total time: 4.544 secs

正如您所看到的,SystemTray确实包含JNA作为依赖项,但如果我在主项目中删除JNA依赖项,则无法运行。

它最终成为上游pom文件的一个问题。 他们将依赖项从编译时依赖项转换为运行时依赖项并修复了它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM