Spring Boot 构建系统

在 Spring Boot 中,选择构建系统是一项很重要的任务。 我们推荐 MavenGradle,因为它们为依赖管理提供了良好的支持。也可以让 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>

查看笔记

扫码一下
查看教程更方便