Maven
Maven用户可以从spring-boot-starter-parent项目继承获得合理的默认值。父项目提供以下功能:
- Java 1.6作为默认编译器级别。
- UTF-8源代码编码。
- 一个依赖管理部分,让您省去了公共依赖标签,从继承的 spring-boot-dependenciesPOM。
- 合理的资源过滤。
- 合理的插件配置(exec plugin, surefire, Git commit ID, shade)。
- 合理的资源application.properties和application.yml包括特定配置文件的文件(例如application-foo.properties和application-foo.yml)
最后一点:由于默认配置文件接受Spring样式占位符(${…}),Maven过滤将更改为使用@..@占位符(可以使用Maven属性覆盖它 resource.delimiter)。
<properties>
<spring-data-releasedetrain.version> Fowler-SR2 </spring-data-releasetrain.version>
</ properties>
##继承starter parent
想配置你的项目继承spring-boot-starter-parent只需要简单地设置parent为
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
</parent>
你应该只需要在该依赖上指定Spring Boot版本。如果导入其他的starters,你可以放心的省略版本号。
通过该设置,您还可以通过覆盖自己的项目中的属性来覆盖单个依赖关系。例如,要升级到另一个Spring Data发行列车,您需要添加以下内容pom.xml
使用没有父POM的Spring Boot
不是每个人都喜欢继承spring-boot-starter-parent POM。你可能需要使用公司标准parent,或你可能倾向于显式声明所有Maven配置。
如果你不使用spring-boot-starter-parent,通过使用一个scope=import的依赖,你仍能获取到依赖管理的好处:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.3.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
改变Java版本
spring-boot-starter-parent选择相当保守的Java兼容策略。如果你遵循我们的建议,使用最新的Java版本,你可以添加一个java.version属性:
<properties>
<java.version>1.8</java.version>
</properties>
使用Spring Boot Maven插件
Spring Boot包含一个Maven插件,它可以将项目打包成一个可执行jar。如果想使用它,你可以将该插件添加到节点处:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
如果使用Spring Boot starter parent pom,你只需要添加该插件而无需配置它,除非你想改变定义在partent中的设置。
如果没有使用parent POM,你仍旧可以使用该插件。不过,你需要另外添加一个片段
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.3.0.BUILD-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>