首页 > 解决方案 > Quarkus gradle 测试失败

问题描述

我正在尝试使用 quarkus 运行简单的“入门”类型的 gradle 项目,并且我的单元测试每次都失败并出现此错误

Caused by: io.quarkus.bootstrap.BootstrapException: Failed to locate project pom.xml for C:\Users\myuser\IdeaProjects\myproj\build\classes\java\main

遵循此处的说明https://quarkus.io/guides/gradle-tooling 对发生的事情有什么建议或想法吗?

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

标签: testinggradlequarkus

解决方案


顺便提一句。问题仍然存在(当前版本 0.19.1)并且问题(2307)仍未解决。

原因是@QuarkusTest指向QuarkusTestExtension,它BootstrapClassLoaderFactory.newDeploymentClassLoader试图用 Maven 解析本地项目。

我们有以下选择:

  • 等待官方解决方案(见问题)
  • 编写自己的扩展覆盖BootstrapClassLoaderFactory以“理解” gradle 项目结构
  • 应用解决方法(暂时),即从 gradle build 生成 pom.xml

解决方法

在 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依赖项更改

推荐阅读