当使用maven-plugin-testing-harness
时,在测试执行过程中遇到以下错误。在加载pom.xml
文件作为测试的一部分时,测试似乎无法解析来自Maven存储库的工件。存储库的url是有效的,并且该构件存在于存储库中。
我们不能简单地将依赖项添加到项目的pom.xml
文件中,因为测试正在寻找与当前版本冲突的旧版本。我们在测试pom文件中配置的插件也遇到了这种情况,这些插件使用了我们在项目pom中已经拥有的依赖项的不同版本。[ERROR] Non-resolvable import POM: Could not transfer artifact ::pom:1.1.2 from/to repository (https://REDACTED VALID URL/): No connector factories available @ line 44, column 19 at org.apache.maven.model.building.DefaultModelProblemCollector.newModelBuildingException(DefaultModelProblemCollector.java:197) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:568) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:454) at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:267) at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:173) ... 47 more
然后测试失败,因为由于这个错误,Maven无法加载Maven Project类。
在线指南建议连接器库在Maven
测试类路径中不可用。这似乎是有道理的,但加入他们并没有影响局势。
1条答案
按热度按时间9o685dep1#
下面的解决方案更像是一种变通方法,但它使我们能够向前迈进。
我们在项目中添加了一个新模块(例如,
test-primer
),并将其分层到我们挑战模块之前的构建中。然后,我们将依赖项添加到该模块,这将触发下载到本地存储库,以便在测试运行时可以使用所需的Maven工件。这个间接层允许我们绕过版本冲突,这些冲突使我们无法在一开始就简单地将添加到测试模块中。下面是一个示例(实际更改集可在GitHub上获得):
新模块
test-primer
添加到父pom:test-primer
pom触发下载所需依赖项: