我试图在一个多模块项目的子模块中运行'mvn干净安装‘。这个项目是雅可科,但我认为这更多的是我不理解Maven是如何在这里使用的问题,而不是Jacoco本身的问题。
https://github.com/jacoco/jacoco/blob/master/jacoco-maven-plugin.test/it/it-site/pom.xml
我得到以下错误:
错误插件@project.groupId@:jacoco-maven-plugin:@project.version@或其依赖项无法解决:无法读取@project.groupId@:jacoco-maven-plugin:jar:@project.version@的工件描述符
我在pom中看到了以下内容
<groupId>@project.groupId@</groupId>
<artifactId>jacoco-maven-plugin</artifactId>我不熟悉在@project.groupId@中使用@符号,尽管我假设它应该在运行时被替换。
我可以从顶级pom运行Maven,我甚至可以在日志中看到[INFO] Building: it-site/pom.xml,但在日志中没有创建目标目录。
如果能朝正确的方向前进,我们将不胜感激。
发布于 2014-01-03 00:54:51
这可能与这里的pom文件有关:https://github.com/jacoco/jacoco/blob/master/jacoco-maven-plugin.test/pom.xml
它正在使用一个名为maven调用者的插件。
调用程序插件用于运行一组Maven项目。插件可以确定每个项目执行是否成功,并且可以选择地验证从给定项目执行中生成的输出。
如果你读到用这个插件过滤文件,它提到
包含/排除模式选择的POM文件。要过滤的标记必须包含在@.@中,以避免干扰Maven的正常POM插值,即使用@project.version@而不是${project.version}。
发布于 2014-01-03 04:32:42
关于为什么这里使用调用程序插件和过滤..。
弹簧启动文件提供了一些相关的背景说明为什么是这样的。虽然docs是用于Spring的,但我认为它适用于测试所有插件( Jacoco就是这样的)。
多模块Maven构建不能直接包含作为反应堆一部分的maven插件,除非它们以前已经构建过。..。标准构建围绕这一限制工作,通过maven-invoker-plugin启动样本,使它们不属于反应堆。 示例应用程序在构建过程中用作集成测试(当您安装mvn时)。由于它们使用了spring-boot-maven-plugin,所以不能直接调用它们,因此它们是通过maven-invoker plugin.启动的。
https://stackoverflow.com/questions/20893450
复制相似问题