Тест интеграции Gradle выдает java .lang.NoClassDefFoundError - PullRequest
0 голосов
/ 27 мая 2020

Я переношу многомодульный проект Gradle Java из Gradle 4.10 в Gradle 6.3. Структура проекта выглядит следующим образом:

├── build.gradle
├── our-webapp
│   ├── build.gradle
│   └── src
│       ├── main
│       ├── integrationTest
│       └── test
└── cli-util
    ├── build.gradle
    └── src
        ├── main
        ├── integrationTest
        └── test

cli-util имеет зависимость от веб-приложения для использования его классов. build.gradle выглядит так:

plugins {
    id 'java'
}

sourceSets {
    integrationTest {
        compileClasspath += sourceSets.main.output + sourceSets.test.output
        runtimeClasspath += sourceSets.main.output + sourceSets.test.output

        java.srcDir 'src/integrationTest/java'
        resources.srcDir 'src/integrationTest/resources'
    }
}

configurations {
    integrationTestImplementation.extendsFrom testImplementation
    integrationTestRuntime.extendsFrom testRuntime
}

dependencies {
    implementation project(':our-webapp')
}

task integrationTest(type: Test) {
    testClassesDirs = sourceSets.integrationTest.output.classesDirs
    classpath = sourceSets.integrationTest.runtimeClasspath
}

А теперь интересно то, что тесты под cli-util/src/intergrationTest работают нормально в Intellij IDEA, но они не работают с терминала всякий раз, когда есть импорт класса, определенного в webapp проект. Ошибка: java.lang.NoClassDefFoundError: com/example/web/SomeClass.

Я уже пробовал разные подходы, включая использование java-library плагина в cli-util проекте и импорт webapp проекта, такого как api project(':our-webapp'), но он все равно не работает.

Та же проблема в Gradle 5.6.x.

Есть ли какие-то особые изменения, которые я принял во внимание, чтобы заставить его работать?

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