【问题标题】:Migration from Maven to Gradle Causes Unexpected Exception从 Maven 迁移到 Gradle 导致意外异常
【发布时间】:2023-03-22 19:14:01
【问题描述】:

将在 java 中完成的 TestNG 项目从 maven .pom 文件移动到 gradle build.gradle。我能够让大部分东西正常工作,但在运行测试时出现错误。

 org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [ApplicationBeans.xml]; nested exception is java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal

我在测试框架代码中使用的是spring框架。

使用以下 gradle 文件:

apply plugin: 'java'
dependencies {
  compile project(':qa_common')
    testCompile(group: 'org.uncommons', name: 'reportng', version:'1.1.4') {
        exclude(module: 'testng')
    }
    testCompile group: 'com.google.inject', name: 'guice', version:'3.0'
    compile group: 'xml-apis', name: 'xml-apis', version:'1.4.01'

}

task testDiscounts(type: Test) {
    useTestNG() {
        suites 'src/test/resources/testsuites/env_qa/TestSuite.xml'
    }

}

task packageTests(type: Jar) {
  from sourceSets.test.output
  classifier = 'tests'
}
artifacts.archives packageTests

谁能告诉我哪里出错了?

【问题讨论】:

  • 该错误似乎暗示 xml-apis 不在类路径中,但您的构建文件具有此依赖关系。您可以尝试手动设置testDiscounts 任务的类路径,例如:classpath = sourceSets.test.runtimeClasspath,看看它是否有效?

标签: java spring maven gradle testng


【解决方案1】:

我想知道以下是否相关:SO article

强制再次下载工件并查看详细信息是否实际获取版本 1.4.01 或是否将其重定向到不同版本可能会很有趣。

【讨论】:

  • 强制它再次下载修复它。
猜你喜欢
  • 1970-01-01
  • 2016-12-08
  • 2015-09-06
  • 2021-05-03
  • 2012-09-13
  • 1970-01-01
  • 2019-04-16
  • 2015-06-25
  • 1970-01-01
相关资源
最近更新 更多