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 -&gt; [Help 1] 会出错

【问题讨论】:

至于 1) 如果你不从 spring boot 父级继承,你必须在 pom 的 plugins 部分声明 spring-boot-maven-plugin 以便重新打包跨度> @orid - 已回复更新 您必须将以下内容添加到插件中:&lt;executions&gt;&lt;execution&gt;&lt;goals&gt;&lt;goal&gt;repackage&lt;/goal&gt;&lt;/goals&lt;/execution&gt;&lt;/executions&gt;。将插件放在父pom中的pluginManagement下,并在每个构建部分下添加&lt;plugin&gt;&lt;groupId&gt;org.springframework.boot&lt;/groupId&lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;&lt;/plugin&gt;对于每个依赖于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 和 spring-boot-maven-plugin 生成战争时排除 application.properties

Spring Boot 2 反应式 webflux

Lombok 不适用于 spring-boot-maven

spring boot 项目打包到maven仓库供其它模块使用

Spring Boot 反应式 Web 服务