Сбой теста Quarkus gradle

#testing #gradle #quarkus

#тестирование #gradle #quarkus

Вопрос:

Я пытаюсь запустить простой проект gradle типа «начало работы» с quarkus, и каждый раз мой модульный тест завершается с ошибкой

 Caused by: io.quarkus.bootstrap.BootstrapException: Failed to locate project pom.xml for C:UsersmyuserIdeaProjectsmyprojbuildclassesjavamain
  

Следуйте инструкциям здесь https://quarkus.io/guides/gradle-tooling
Есть предложения или мысли о том, что происходит?

Сведения о версии Gradle

Gradle 5.4

 Build time:   2019-04-16 02:44:16 UTC
Revision:     a4f3f91a30d4e36d82cc7592c4a0726df52aba0d

Kotlin:       1.3.21
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.2 (Oracle Corporation 11.0.2 9)
OS:           Windows 10 10.0 amd64
  

Комментарии:

1. Скоро будет выпущена версия 0.14.0 , которая, я думаю, устраняет проблему.

2. Спасибо @geoand. Я тоже пробовал это сегодня и такое же поведение.

3. Не могли бы вы открыть проблему, пожалуйста, если ее еще нет?

4. Хорошо, я открыл один ty @geoand

5. Спасибо! Просто для справки, вот проблема: github.com/quarkusio/quarkus/issues/2307

Ответ №1:

кстати. проблема все еще открыта (текущая версия 0.19.1), а проблема (2307) все еще не решена.

Причина в том, что @QuarkusTest указывает на QuarkusTestExtension , который в BootstrapClassLoaderFactory.newDeploymentClassLoader пытается разрешить локальный проект с помощью Maven.

У нас есть варианты:

  • дождитесь официального решения (см. Проблему)
  • напишите собственное переопределение расширения BootstrapClassLoaderFactory , чтобы «понять» структуру проекта gradle
  • примените обходной путь (на данный момент), т.Е. сгенерируйте pom.xml из gradle build

Обходной путь

в build.grade:

 plugins {
    id 'java'
    id 'io.quarkus' version '0.19.1'
    // ...
    id 'maven-publish'
}
// ...
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
            // augment your pom here if necessary
        }
    }
}
// ...
task createPom(type: Copy) {
    description 'This is workaround to generate pom.xml, needed for @QuarkusTest tests.'
    dependsOn('generatePomFileForMavenJavaPublication')
    from "$buildDir/publications/mavenJava/pom-default.xml"
    into '.'
    rename('pom-default.xml', 'pom.xml')
}
  

Примечание:

  • используйте ‘maven-publish’, а не устаревший плагин ‘maven’.
  • не забудьте применить ./gradlew createPom к изменениям зависимостей