Gradle依赖性未列出本地Maven Jar的依赖性

时间:2019-04-08 07:30:17

标签: java maven gradle

我正在使用Gradle构建系统开发IntelliJ插件。该插件使用一个通用模型,即maven项目。

我已经在我的gradle存储库中包含了mavenLocal,并且还在“ dependencies”中添加了编译时依赖。

代码可以正常编译,但是在运行时出现java.lang.NoClassDefFoundError。当我在gradle中检查依赖项时,它没有列出本地maven jar(模型库)的所有依赖项。

下面是我的build.gradle的剥离版本

plugins {
    id 'java'
    id 'org.jetbrains.intellij' version '0.4.1'
    id 'maven'
}
group 'oracle.nosql'

repositories {
    //mavenCentral()
    mavenLocal()
}
dependencies {
    compile 'oracle.nosql:oracle.nosql.model.common:1.0.0' //this is maven lib
    compile 'oracle.nosql:oracle.nosql.model.cloud:1.0.0' //this is maven lib
}
apply plugin: 'maven'

下面是gradle dependencies

的输出
compileClasspath - Compile classpath for source set 'main'.M
+--- oracle.nosql:oracle.nosql.model.common:1.0.0M
+--- oracle.nosql:oracle.nosql.model.cloud:1.0.0M
|    \--- com.fasterxml.jackson.core:jackson-databind:2.9.7M
|         +--- com.fasterxml.jackson.core:jackson-annotations:2.9.0M
|         \--- com.fasterxml.jackson.core:jackson-core:2.9.7M
\--- com.jetbrains:ideaIC:2018.3.2M

但是在Maven中,模型依赖性是不同的。

    mvn dependency:build-classpath

    oracle.nosql.model.cloud ---
    [INFO] Dependencies classpath:
    ...\.m2\repository\oracle\nosql\oracle.nosql.model.common\1.0.0\oracle.nosql.model.common-1.0.0.jar;
D:\oracle-nosql-cloud-sdk-18.298\java\lib\nosqldriver.jar;
...\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.9.7\jackson-databind-2.9.7.jar;...\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;...\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.9.7\jackson-core-2.9.7.jar;...\.m2\repository\junit\junit\4.12\junit-4.12.jar;

尤其是gradle依赖项中缺少D:\oracle-nosql-cloud-sdk-18.298\java\lib\nosqldriver.jar

我认为这导致java.lang.NoClassDefFoundError。

1 个答案:

答案 0 :(得分:1)

鉴于D:\oracle-nosql-cloud-sdk-18.298\java\lib\nosqldriver.jar的绝对路径,我假设您在Maven库中声明了一个system依赖项。

对于compileClasspathruntimeClasspath分辨率,Gradle不包含这些依赖项。

您将不得不在Gradle构建中将此依赖项重新添加为文件依赖项。

相关问题