java - Gradle依赖项未列出本地maven jar的依赖项

标签 java maven gradle

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

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

代码编译正常,但我在运行时遇到 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依赖项的输出

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。

最佳答案

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

Gradle 不会将这些依赖项包含在 compileClasspathruntimeClasspath 解析中。

您必须将此依赖项作为文件依赖项添加回 Gradle 构建中。

关于java - Gradle依赖项未列出本地maven jar的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55568256/

相关文章:

java - Apache Tomcat 配置问题

java - 在 Eclipse 中使用原型(prototype)选择创建 Maven 项目时出错

java - 获取每个 Mapper 或 Spark MapReduce 模型中全局的每个键的计数

java - 兴趣点 : How to get the correct Cell Type of a formatted cell

gradle 'build' 任务困惑

java - 如果我正在构建非 Web 应用程序,Maven 是我想使用的工具吗?

maven - 如何将Cobertura插件应用于所有项目或所有子项目

java - maven 属性不会被 -dParam.version 覆盖

java - Eclipse 中缺少项目依赖项

android - java.lang.IllegalStateException : Could not initialize plugin: MockMaker 错误