在本文中,我们将讨论Spring Boot Starter Parent如何帮助管理依赖性版本、项目使用的Java版本以及插件的默认配置。
在本文中,我们将讨论spring-boot-starter-parent
依赖性与maven构建工具的关系。
所有Spring Boot项目通常在pom.xml
中使用spring-boot-starter-parent
作为父类。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
</parent>
spring-boot-starter-parent
允许我们为多个子项目和模块管理以下事项。
Maven用户可以从spring-boot-starter-parent
项目继承,以获得合理的默认值。父项目提供以下功能。
1.8
为默认编译器级别。UTF-8
源编码。spring-boot-dependencies
pom的依赖管理部分,管理常见依赖的版本。这个依赖性管理让你在自己的pom中使用时可以省略这些依赖性的标签。repackage goal
的执行ID为repackage
。Spring Boot Starter Parent将spring-boot-dependencies
作为父pom。它从spring-boot-dependencies
继承了依赖性管理。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
对于Spring Boot 2+,默认的java版本是1.8
。其他一些与编码和源、目标版本有关的设置也在父pom中设置。
<properties>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<resource.delimiter>@</resource.delimiter>
<maven.compiler.source>${java.version}</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
Spring Boot Starter Parent指定了一系列插件的默认配置,包括maven-failsafe-plugin
、maven-jar-plugin
、maven-surefire-plugin
和maven-war-plugin
等。
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<parameters>true</parameters>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
</configuration>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>${start-class}</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>${start-class}</mainClass>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
</archive>
</configuration>
</plugin>
还有一些插件,你可以在spring-boot-starter-parent pom.xml上找到它们。
不是每个人都喜欢从spring-boot-starter-parent
POM中继承。你可能有自己的企业标准父本需要使用,也可能喜欢明确声明你的所有Maven配置。
如果你不想使用spring-boot-starter-parent
,你仍然可以通过使用scope=import
依赖关系来保持依赖关系管理的好处(但不是插件管理),如下所示。
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
下一步是我们需要在spring-boot-dependencies
条目之前,在你项目的dependencyManagement
中添加一个条目。例如,如果要升级到另一个Spring Data发布列车,你可以在你的pom.xml
中添加以下元素。
<dependencyManagement>
<dependencies>
<!-- Override Spring Data release train provided by Spring Boot -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Fowler-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Spring Boot Dependencies定义了所有Spring Boot项目的默认依赖性管理。如果我们想使用某个特定依赖的新版本,我们可以通过在项目pom中指定一个新属性来覆盖该版本。下面的列表显示了由Spring Boot Dependencies parent pom管理的一些重要依赖关系。由于Spring Boot Starter Parent继承自spring-boot-dependencies,所以它也共享所有这些特性。
<properties>
<activemq.version>5.15.4</activemq.version>
<antlr2.version>2.7.7</antlr2.version>
<appengine-sdk.version>1.9.64</appengine-sdk.version>
<artemis.version>2.4.0</artemis.version>
<aspectj.version>1.8.13</aspectj.version>
<assertj.version>3.9.1</assertj.version>
<atomikos.version>4.0.6</atomikos.version>
<bitronix.version>2.1.4</bitronix.version>
<build-helper-maven-plugin.version>3.0.0</build-helper-maven-plugin.version>
<byte-buddy.version>1.7.11</byte-buddy.version>
<caffeine.version>2.6.2</caffeine.version>
<cassandra-driver.version>3.4.0</cassandra-driver.version>
<classmate.version>1.3.4</classmate.version>
<commons-codec.version>1.11</commons-codec.version>
<commons-dbcp2.version>2.2.0</commons-dbcp2.version>
<commons-lang3.version>3.7</commons-lang3.version>
<commons-pool.version>1.6</commons-pool.version>
<commons-pool2.version>2.5.0</commons-pool2.version>
<couchbase-cache-client.version>2.1.0</couchbase-cache-client.version>
<couchbase-client.version>2.5.9</couchbase-client.version>
<derby.version>10.14.1.0</derby.version>
<dom4j.version>1.6.1</dom4j.version>
<dropwizard-metrics.version>3.2.6</dropwizard-metrics.version>
<ehcache.version>2.10.5</ehcache.version>
<ehcache3.version>3.5.2</ehcache3.version>
<elasticsearch.version>5.6.10</elasticsearch.version>
<embedded-mongo.version>2.0.3</embedded-mongo.version>
<exec-maven-plugin.version>1.5.0</exec-maven-plugin.version>
<flatten-maven-plugin.version>1.0.1</flatten-maven-plugin.version>
<flyway.version>5.0.7</flyway.version>
<freemarker.version>2.3.28</freemarker.version>
<git-commit-id-plugin.version>2.2.4</git-commit-id-plugin.version>
<glassfish-el.version>3.0.0</glassfish-el.version>
<groovy.version>2.4.15</groovy.version>
<gson.version>2.8.5</gson.version>
<h2.version>1.4.197</h2.version>
<hamcrest.version>1.3</hamcrest.version>
<hazelcast.version>3.9.4</hazelcast.version>
<hazelcast-hibernate5.version>1.2.3</hazelcast-hibernate5.version>
<hibernate.version>5.2.17.Final</hibernate.version>
<hibernate-jpa-2.1-api.version>1.0.2.Final</hibernate-jpa-2.1-api.version>
<hibernate-validator.version>6.0.11.Final</hibernate-validator.version>
<hikaricp.version>2.7.9</hikaricp.version>
<hsqldb.version>2.4.1</hsqldb.version>
.......
</properties>
在spring-boot-dependencies pom.xml上查找更多默认设置
在Spring Boot教程中了解Spring Boot的最新版本
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javaguides.net/2018/09/overview-of-spring-boot-starter-parent.html
内容来源于网络,如有侵权,请联系作者删除!