首页 > 其他分享 >Spring Boot 构建工具插件

Spring Boot 构建工具插件

时间:2022-11-15 11:31:18浏览次数:60  
标签:插件 Spring boot jar Boot 使用

Spring Boot 为 Maven 和 Gradle 提供了构建工具插件。这些插件提供了多种功能,包括可执行 jar 的打包。本节提供有关这两个插件的更多详细信息,以及在您需要扩展不受支持的构建系统时提供的一些帮助。如果您刚刚开始,您可能需要先阅读“ using.html​ ”部分中的“ using.html ”。

Spring Boot 构建工具插件_可执行

1. Spring Boot Maven 插件

Spring Boot Maven 插件在 Maven 中提供 Spring Boot 支持,让您可以打包可执行 jar 或 war 档案并“就地”运行应用程序。要使用它,您必须使用 Maven 3.2(或更高版本)。

请参阅插件的文档以了解更多信息:

  • 参考(HTML和PDF)
  • API

2. Spring Boot Gradle 插件

Spring Boot Gradle Plugin 在 Gradle 中提供 Spring Boot 支持,让您可以打包可执行的 jar 或 war 档案,运行 Spring Boot 应用程序,并使用​​spring-boot-dependencies​​. 它需要 Gradle 6.8、6.9 或 7.x。请参阅插件的文档以了解更多信息:

  • 参考(HTML和PDF)
  • API

3. Spring Boot AntLib 模块

Spring Boot AntLib 模块为 Apache Ant 提供基本的 Spring Boot 支持。您可以使用该模块来创建可执行的 jar。要使用该模块,您需要​​spring-boot​​在您的 中声明一个额外的命名空间​​build.xml​​,如以下示例所示:

<project xmlns:ivy="antlib:org.apache.ivy.ant"
xmlns:spring-boot="antlib:org.springframework.boot.ant"
name="myapp" default="build">
...
</project>

您需要记住使用该​​-lib​​选项启动 Ant,如以下示例所示:

$ ant -lib <directory containing spring-boot-antlib-2.7.5.jar>

3.1Spring Boot Ant 任务

声明命名空间后​​spring-boot-antlib​​,可以使用以下附加任务:

  • 使用“exejar”任务
  • 使用“findmainclass”任务

3.1.1使用“exejar”任务

您可以使用该​​exejar​​任务来创建 Spring Boot 可执行 jar。任务支持以下属性:

属性

描述

必需的

​destfile​

要创建的目标 jar 文件

是的

​classes​

Java类文件的根目录

是的

​start-class​

要运行的主要应用程序类

(默认是找到的第一个声明​​main​​方法的类)

以下嵌套元素可用于该任务:

元素

描述

​resources​

一个或多个资源集合​,描述应添加到创建的 jar 文件内容中的一组资源。

​lib​

应将一个或多个资源集合添加到构成应用程序的运行时依赖类路径的 jar 库集合中。

3.1.2例子

本节展示了 Ant 任务的两个示例。

指定开始类

<spring-boot:exejar destfile="target/my-application.jar"
classes="target/classes" start-class="com.example.MyApplication">
<resources>
<fileset dir="src/main/resources" />
</resources>
<lib>
<fileset dir="lib" />
</lib>
</spring-boot:exejar>

检测开始类

<exejar destfile="target/my-application.jar" classes="target/classes">
<lib>
<fileset dir="lib" />
</lib>
</exejar>

3.2. 使用“findmainclass”任务

该​​findmainclass​​任务在内部​​exejar​​用于定位一个声明​​main​​. 如有必要,您也可以直接在构建中使用此任务。支持以下属性:

属性

描述

必需的

​classesroot​

Java类文件的根目录

(除非​​mainclass​​指定)

​mainclass​

可用于短路​​main​​类搜索

​property​

应使用结果设置的 Ant 属性

(如果未指定,将记录结果)

3.2.1例子

本节包含三个使用​​findmainclass​​.

查找并记录

<findmainclass classesroot="target/classes" />

查找并设置

<findmainclass classesroot="target/classes" property="main-class" />

覆盖并设置

<findmainclass mainclass="com.example.MainClass" property="main-class" />

4. 支持其他构建系统

如果您想使用除 Maven、Gradle 或 Ant 之外的构建工具,您可能需要开发自己的插件。可执行 jar 需要遵循特定的格式,并且某些条目需要以未压缩的形式写入(有关详细信息,请参阅附录中的“可执行 jar 格式”部分)。

Spring Boot Maven 和 Gradle 插件都​​spring-boot-loader-tools​​用于实际生成 jar。如果需要,可以直接使用这个库。

4.1重新包装档案

要重新打包现有存档以使其成为独立的可执行存档,请使用​​org.springframework.boot.loader.tools.Repackager​​. 该类​​Repackager​​采用单个构造函数参数,该参数引用现有的 jar 或 war 存档。使用两种可用​​repackage()​​方法之一来替换原始文件或写入新目标。在运行之前,还可以在重新打包器上配置各种设置。

4.2. 嵌套库

重新打包存档时,您可以使用该​​org.springframework.boot.loader.tools.Libraries​​界面包含对依赖文件的引用。我们在这里不提供任何具体的实现,​​Libraries​​因为它们通常是特定于构建系统的。

如果您的存档已经包含库,您可以使用​​Libraries.NONE​​.

4.3. 寻找主类

如果不使用​​Repackager.setMainClass()​​指定主类,则重新打包器使用​​ASM​​读取类文件并尝试使用​​public static void main(String[] args)​​方法找到合适的类。如果找到多个候选者,则会引发异常。

4.4. 示例重新打包实现

以下示例显示了一个典型的重新打包实现:

public class MyBuildTool {

public void build() throws IOException {
File sourceJarFile = ...
Repackager repackager = new Repackager(sourceJarFile);
repackager.setBackupSource(false);
repackager.repackage(this::getLibraries);
}

private void getLibraries(LibraryCallback callback) throws IOException {
// Build system specific implementation, callback for each dependency
for (File nestedJar : getCompileScopeJars()) {
callback.library(new Library(nestedJar, LibraryScope.COMPILE));
}
// ...
}

private List<File> getCompileScopeJars() {
return ...
}

}

标签:插件,Spring,boot,jar,Boot,使用
From: https://blog.51cto.com/u_15326439/5852055

相关文章

  • Spring Boot Admin 入门
    SpringBootAdmin入门SpringBootAdmin是一个社区项目,主要用于管理和监控SpringBoot应用程序搭建SpringBootAdmin服务器1、创建springboot项目,引入以下依......
  • 一张图彻底搞懂Spring循环依赖
    1什么是循环依赖?如下图所示:BeanA类依赖了BeanB类,同时BeanB类又依赖了BeanA类。这种依赖关系形成了一个闭环,我们把这种依赖关系就称之为循环依赖。同理,再如下图的情况:......
  • Spring 5系统架构
    Spring5系统架构Spring大约有20个模块,由1300多个不同的文件构成。这些模块可以分为核心容器、AOP和设备支持、数据访问与集成、Web组件、通信报文和集成测试、集成兼容等......
  • Spring&SpringBoot常用注解总结
    title:Spring&SpringBoot常用注解总结date:2022-11-1509:11:45tags:1.@SpringBootApplication这里先单独拎出@SpringBootApplication注解说一下,虽然我们一般不会......
  • Spring版本命名规则
    1常见软件的版本命名常见软件的版本命名举例如下表所示。软件升级过程说明LinuxKernel0.0.11.0.02.6.323.0.18若用X.Y.Z表示,则偶数Y表示稳定版本,奇数Y表示开发版......
  • 立创商城封装搜索载入插件 AD-LCSC 转载
    AD-LCSC脚本地址:Releases·TimonPeng/AD-LCSC-Addons(github.com)立创商城封装搜索载入插件开源AltiumDesigner立创商城封装搜索载入插件-立创社区(szlcsc.co......
  • 记录关于spring事务的两个坑
    一,调用本地方法时,事务不起作用。   原因:事务能生效的原因是spring对事务的对象做了动态代理,这里默认的是用this(目标对象)调用方法,所以没有事务功能。需要拿到事务......
  • 13-1 k8s网络插件CNI
    k8s网络插件CNICNI:ContainerNetworkInterface:最主要功能就是实现Pod资源能够跨宿主机进行通信Flannel:最成熟、最简单的选择Calico:性能好、灵活性最强,目前的企业......
  • 13-3 k8s网络插件-flannel安装
    flannel安装:1、yaml方式安装:在已经安装好k8s集群之上部署flannel:获取flannelyaml文件,应用官方的yaml文件:若以下无法下载:https://kubernetes.io/docs/concepts/cl......
  • 13-2 k8s网络插件-flannel介绍
    Flannelflannel模型:host-gw模型VxLAN模型Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器......