【发布时间】:2020-06-09 07:04:12
【问题描述】:
我有一个多模块 Maven 项目,其中包含一个由多个 Spring Boot 服务组成的应用程序。我正在尝试为服务设置集成和端到端测试,并使用组合 Maven 插件来编排。
我有一个模块,旨在仅包含对执行某些工作的协作服务组的端到端测试。它仅包含测试代码和资源。我使用故障安全插件 (org.apache.maven.plugins:maven-failsafe-plugin) 执行集成测试,使用 Spring Boot Maven 插件 (org.springframework.boot:spring-boot-maven-plugin) 启动和停止“主”服务,使用 Maven exec 插件 (org.codehaus.mojo:exec-maven-plugin) 启动端到端测试中使用的其他服务。
我遇到了一个似乎与 Spring Boot 插件的 repackage 目标有关的问题。 e2e 模块没有什么需要重新打包的,所以我想跳过这个目标。应该不会太难吧?
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
<execution>
...
好吧,这行不通。尽管如此,它还是会重新打包。
问题在于 Maven 构建失败,因为它找不到要重新打包的“主”类(我相信作为可执行 jar)。嗯,没有这个模块没有主类。
更重要的问题是:为什么<skip>true</skip>会被忽略?
【问题讨论】:
-
在
上面执行后可以加 <id>repackage</id>吗。 -
成功了。显然,我没有怀疑
id元素的重要性。我认为这只是一种以更易于阅读的方式“标记”项目的便捷方式。我假设“repackage”的id元素内容是关键。 -
你能把我的建议标记为已回答吗?
-
我该怎么做?据我所知,您实际上必须发布您的答案作为答案。
-
我认为 execution-id 仅作为区分不同执行的标签,但似乎这取决于使用的插件,如 Spring 插件,它期望 execution-id 完全是“重新打包”。感谢这有助于解决我的问题。
标签: maven-2 spring-boot-maven-plugin