Spring Boot 构建系统
在 Spring Boot 中,选择构建系统是一项很重要的任务。 我们推荐 Maven 或 Gradle
,因为它们为依赖管理提供了良好的支持。也可以让 Spring Boot 与其他构建系统(例如 Ant)一起工作,但它们并没有得到特别好的支持。
依赖管理
Spring Boot 团队提供了一个依赖项列表,以支持其每个版本的 Spring Boot 版本。 您无需在构建配置文件中提供依赖项的版本。 Spring Boot 会根据 release 自动配置依赖版本。 请记住,当您升级 Spring Boot 版本时,依赖项也会自动升级。
注意
- 如果要指定依赖项的版本,可以在配置文件中指定。 但是,Spring Boot 团队强烈建议不需要指定依赖的版本。
精选列表包含我们可以与 Spring Boot 一起使用的所有 Spring 模块以及第三方库的精致列表。 该列表作为标准材料清单(spring-boot-dependencies
)提供,可用于 Maven 和 Gradle。
Spring Boot 的每个版本都与 Spring Framework 的基本版本相关联。 我们强烈建议不要指定其版本。
Maven 依赖
对于 Maven 配置,我们应该继承 Spring Boot Starter 父项目来管理 Spring Boot Starters 依赖项。 为此,我们可以简单地继承 pom.xml 文件中的 starter parent,如下所示。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
</parent>
我们应该为 Spring Boot Parent Starter 依赖项指定版本号。 那么对于其他的starter依赖,我们就不需要指定Spring Boot的版本号了。 观察下面给出的代码
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Gradle 依赖
我们可以将 Spring Boot Starters 依赖项直接导入 build.gradle 文件。 我们不需要像 Maven for Gradle 这样的 Spring Boot 启动父依赖项。 观察下面给出的代码
buildscript {
ext {
springBootVersion = '1.5.8.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
同样,在 Gradle 中,我们不需要为依赖项指定 Spring Boot 版本号。 Spring Boot 会根据版本自动配置依赖。
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
}
Ant
可以使用 Apache Ant+Ivy
构建 Spring Boot 项目。 spring-boot-antlib “AntLib” 模块也可用于帮助 Ant 创建可执行的 jar。
要声明依赖项,典型的 ivy.xml 文件类似于以下示例:
<ivy-module version="2.0">
<info organisation="org.springframework.boot" module="spring-boot-sample-ant" />
<configurations>
<conf name="compile" description="everything needed to compile this module" />
<conf name="runtime" extends="compile" description="everything needed to run this module" />
</configurations>
<dependencies>
<dependency org="org.springframework.boot" name="spring-boot-starter"
rev="${spring-boot.version}" conf="compile" />
</dependencies>
</ivy-module>
典型的 build.xml 类似于以下示例:
<project
xmlns:ivy="antlib:org.apache.ivy.ant"
xmlns:spring-boot="antlib:org.springframework.boot.ant"
name="myapp" default="build">
<property name="spring-boot.version" value="2.6.7" />
<target name="resolve" description="--> retrieve dependencies with ivy">
<ivy:retrieve pattern="lib/[conf]/[artifact]-[type]-[revision].[ext]" />
</target>
<target name="classpaths" depends="resolve">
<path id="compile.classpath">
<fileset dir="lib/compile" includes="*.jar" />
</path>
</target>
<target name="init" depends="classpaths">
<mkdir dir="build/classes" />
</target>
<target name="compile" depends="init" description="compile">
<javac srcdir="src/main/java" destdir="build/classes" classpathref="compile.classpath" />
</target>
<target name="build" depends="compile">
<spring-boot:exejar destfile="build/myapp.jar" classes="build/classes">
<spring-boot:lib>
<fileset dir="lib/runtime" />
</spring-boot:lib>
</spring-boot:exejar>
</target>
</project>