Maven 反应器:使用 Spring Boot 启动器 pom 的 pom
Posted
技术标签:
【中文标题】Maven 反应器:使用 Spring Boot 启动器 pom 的 pom【英文标题】:Maven reactor: pom using Spring boot starter pom 【发布时间】:2015-01-27 07:59:31 【问题描述】:我有一个包含多个模块的项目。其中一些使用 spring boot,其他是没有任何 spring 依赖的普通 jars。 所以我对每个模块都有一个父 pom.xml 设置。麻烦在于 Spring Boot 项目。
我已将 Spring Boot 依赖项设置为 scope=import
,如列出的 here在每个 Spring Boot 项目中。它是否正确?还是应该将它移到我的父 POM 中?
我遇到的问题 1.当我从顶层文件夹运行 mvn package 时,它不会重新打包 spring boot jars。 2. 我的 Spring Boot 项目列出了其他 Spring Boot 依赖项。以 spring boot starter 作为父级,他们不需要版本标签。现在他们做到了。我已将其定义为父 pom 中的属性并添加了版本标签,但想知道这是否更好。
感谢阅读。
更新对评论 #1 的回复:我的父 POM 中有 spring-boot-maven-plugin
,如下所示
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.1.9.RELEASE</version>
</plugin>
</plugins>
<pluginManagement>
....
</build>
我也尝试在我的 Spring Boot 项目中手动运行 mvn spring-boot:repackage
,但 :repackage failed: Source must refer to an existing file -> [Help 1]
会出错
【问题讨论】:
至于 1) 如果你不从 spring boot 父级继承,你必须在 pom 的 plugins 部分声明 spring-boot-maven-plugin 以便重新打包跨度> @orid - 已回复更新 您必须将以下内容添加到插件中:<executions><execution><goals><goal>repackage</goal></goals</execution></executions>
。将插件放在父pom中的pluginManagement
下,并在每个构建部分下添加<plugin><groupId>org.springframework.boot</groupId<artifactId>spring-boot-maven-plugin</artifactId></plugin>
对于每个依赖于spring boot的模块
谢谢 - 成功了。如果您可以将其添加为答案,我会接受。
【参考方案1】:
如果你不是从 spring boot parent 继承,你必须在 pom 的 plugins 部分声明 spring-boot-maven-plugin 才能重新打包。
您必须将以下内容添加到插件中:
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
你应该把插件放在父pom的pluginManagement下,并添加
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
在每个依赖于 Spring Boot 的模块的每个构建部分下。
【讨论】:
超级!谢谢!像魅力一样工作!以上是关于Maven 反应器:使用 Spring Boot 启动器 pom 的 pom的主要内容,如果未能解决你的问题,请参考以下文章
使用 spring boot 和 spring-boot-maven-plugin 生成战争时排除 application.properties