Maven Spring Boot-已拥有父pom时的父pom
是否有一种特定的推荐方法来将spring boot父pom包含到已经具有所需父pom的项目中 对于需要从组织父级扩展的项目,您有什么建议(这是非常常见的,甚至是许多/大多数项目发布到Maven central,具体取决于它们来自的子级回购协议)。大多数构建工作都与创建可执行JAR有关(例如,运行嵌入式Tomcat/Jetty)。有一些方法可以构造事物,这样您就可以在不从父级扩展的情况下获得所有依赖项(类似于组合与继承)。但是你不能用这种方式得到一个构建的东西 因此,最好是将所有spring boot父pom包含在所需父pom中,还是在项目pom文件中仅具有pom依赖项 其他选择 蒂亚Maven Spring Boot-已拥有父pom时的父pom,maven,spring-boot,parent-pom,Maven,Spring Boot,Parent Pom,是否有一种特定的推荐方法来将spring boot父pom包含到已经具有所需父pom的项目中 对于需要从组织父级扩展的项目,您有什么建议(这是非常常见的,甚至是许多/大多数项目发布到Maven central,具体取决于它们来自的子级回购协议)。大多数构建工作都与创建可执行JAR有关(例如,运行嵌入式Tomcat/Jetty)。有一些方法可以构造事物,这样您就可以在不从父级扩展的情况下获得所有依赖项(类似于组合与继承)。但是你不能用这种方式得到一个构建的东西 因此,最好是将所有spring bo
Scott您可以像“bom”一样使用spring boot starter父级(c.f.和Jersey现在支持此功能的其他项目),并且只将其包含在scope=import的依赖项管理部分。这样,您就可以从使用它中获得很多好处(即依赖项管理)而不替换实际父对象中的设置 它所做的另外两件主要事情是
org.springframework.boot
spring启动依赖项
2.1.3.1发布
聚甲醛
进口
用1.5.9.0版本更新2018-01-04
我这里有完整的代码和可运行的示例
你需要这个作为基本的
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${springframework.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
不,不,如果您使用Maven概要文件和资源过滤器,并使用带“@”而不是“${}”的Spring引导(如本例),那么这仍然是不够的。然后您需要显式地将其添加到
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
src/main/resources
真的
而这个呢
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
org.apache.maven.plugins
根据Surasin Tancharoen的回答,您可能还需要定义maven surefire插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
</plugin>
org.apache.maven.plugins
maven surefire插件
${maven surefire plugin.version}
可能还包括fail fast插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven-failsafe-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
org.apache.maven.plugins
maven故障保护插件
${maven failsafe plugin.version}
集成测试
验证
我猜这确实会吸引插件-阴影等?不。请阅读链接:“您仍然可以保留依赖关系管理的好处(但不是插件管理)”@DaveSyer请澄清:1:当我有了自定义的项目父项
时,我可以将spring boot starter父项
添加到此项目父项
-可以吗?在这种情况下,我是否也需要spring引导依赖项
?2:我使用springboot:run运行的普通springboot项目。如何使用不同的父pom运行项目?上面的代码片段足以获得依赖项管理功能。如果你想要插件(比如springboot:run
),你需要把它们分开。如果你想的话,你可以从启动父线程复制粘贴。我知道这是一个旧线程,但它帮了我很多,谢谢。我最终从源头上读到了这个机制。这解释了很多。@Arvind警告,我的例子是1.5.9。你应该使用1.5.11(昨天发布),因为这个版本修复了一个严重的安全问题。正如你的博客所提到的,我试图添加maven resources插件,但它仍然给我“在目标中没有主清单属性”。我试过运行spring boot:run,这也不起作用:(@sagar27你使用的是1.5.X还是2.X版本?如果是2.X,可能需要更多的东西。谢谢!!你救了我的命
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven-failsafe-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>