Зависимости Gradle, не перечисляющие зависимости локального maven jar - PullRequest
0 голосов
/ 08 апреля 2019

Я разрабатываю плагин IntelliJ с использованием системы сборки Gradle. Этот плагин использует общую модель, которая представляет собой проект 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 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;

В частности, D:\oracle-nosql-cloud-sdk-18.298\java\lib\nosqldriver.jar отсутствует в зависимости от gradle.

Я думаю, что это вызывает java.lang.NoClassDefFoundError.

1 Ответ

1 голос
/ 10 апреля 2019

Учитывая абсолютный путь D:\oracle-nosql-cloud-sdk-18.298\java\lib\nosqldriver.jar, я предполагаю, что в вашей библиотеке Maven объявлена ​​зависимость system.

Эти зависимости не включены Gradle для разрешения compileClasspath или runtimeClasspath.

Вы должны будете добавить эту зависимость обратно как файловую зависимость в вашей сборке Gradle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...