#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
к изменениям зависимостей