Java-SpringBoot-12-Spring Boot Maven Plugin-03

简介: 今天看看Spring Boot Maven Plugin打包的一些配置。 Spring Boot Maven Plugin可以创建包含所有应用程序依赖项的可执行归档文件(jar文件和war文件),然后可以使用运行java -jar来执行项目。

今天看看Spring Boot Maven Plugin打包的一些配置。

       Spring Boot Maven Plugin可以创建包含所有应用程序依赖项的可执行归档文件(jar文件和war文件),然后可以使用运行java -jar来执行项目。

一、repackage 目标是打成包含依赖的可执行包,如以下示例所示:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>

默认情况下,原始(即不可执行)包文件被重命名为.original,但也可以使用自定义分类器保留原始包文件。

       插件会重写您的清单,尤其是管理Main-Class和Start-Class条目。如果默认设置不起作用,则必须在Spring Boot插件中配置值,而不是在jar插件中配置值。清单中的主类由Spring启动插件的layout属性控制,例如:

<configuration><!--去除开发工具,加入这个后打好的包中lib下不会有devtools包--><excludeDevtools>true</excludeDevtools><!--启动类项目中只设置一个自动会找到,但是声明layout后必须手动设置--><mainClass>${start.class}</mainClass><!--layout属性默认为由归档类型(jar或war)确定的值。可以使用以下布局:JAR:常规的可执行JAR布局。WAR:可执行的WAR布局。当将servlet部署在servlet容器中时,provided将放置依赖项WEB-INF/lib-provided以避免任何冲突war。ZIP(别名为DIR):类似于JAR使用的布局PropertiesLauncher。NONE:捆绑所有依赖项和项目资源。不捆绑引导加载程序。注意必须大写,用的是枚举类比如jar就报错了,得用JAR--><layout>ZIP</layout></configuration>

二、排除依赖项

       默认情况下,repackage和run目标都将包括项目中定义的任何提供的依赖项。Spring Boot项目应该将所提供的依赖项视为运行应用程序所需的“容器”依赖项。有些依赖可能根本不需要,应该从可执行jar中排除。为了保持一致性,它们在运行应用程序时也不应该出现。

       如果需要排除其中一些依赖关系,则可以使用以下exclude选项,默认情况下,会自动排除Devtools(您可以使用excludeDevtools属性来控制它)。为了使它与war打包一起使用,spring-boot-devtools必须将依赖项设置为optional或设置为provided范围。

<configuration><!--去除开发工具,加入这个后打好的包中lib下不会有devtools包--><excludeDevtools>true</excludeDevtools></configuration>

反编译后可以看到打好的包里没有了devtools依赖包:

image.png

有两种方法可以在运行时打包/使用中排除依赖项

  1. 由groupId、artifactId和classifier标识的特定依赖排除.比如以下例子排除了com.example:module1依赖:
<project><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>com.example</groupId><artifactId>module1</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

2.排除属于给定groupId的任何依赖。以下例子排除了属于该com.example组的任何依赖包:

<project><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludeGroupIds>com.example</excludeGroupIds></configuration></plugin></plugins></build></project>

END

目录
相关文章
|
4天前
|
IDE Java Maven
Spring Boot之如何解决Maven依赖冲突Maven Helper 安装使用
Spring Boot之如何解决Maven依赖冲突Maven Helper 安装使用
29 2
|
4天前
|
Java Maven
SpringBoot用maven打出的jar只有几kb解决
SpringBoot用maven打出的jar只有几kb解决
71 0
|
3天前
|
Java Maven
SpringBoot项目的用maven插件打包报Test错误
SpringBoot项目的用maven插件打包报Test错误
|
4天前
|
Java Maven 开发者
Java一分钟之-Maven项目管理工具使用
【5月更文挑战第15天】Maven是Java开发的项目管理工具,用于自动化构建、依赖管理和项目信息管理。通过POM模型管理项目,依赖中央仓库。基本目录包括`src/main/java`、`src/main/resources`、`src/test/java`和`src/test/resources`。常用命令有`clean`、`compile`、`test`、`package`和`install`。面对依赖冲突、找不到依赖或编译错误,可以调整`pom.xml`或`settings.xml`。理解Maven的工作原理和解决常见问题能提升开发效率。
17 0
|
4天前
|
存储 Java Maven
Maven 构建 Java 项目
使用 Maven 的 `maven-archetype-quickstart` 插件在 `C:\MVN` 创建 Java 应用项目 `consumerBanking`,命令行参数包括 `-DgroupId`, `-DartifactId` 和 `-DarchetypeArtifactId`。项目包含 src/main/java 和 src/test/java 目录,分别存放 Java 代码和测试代码,以及 src/main/resources 用于存储资源文件。默认生成的 `App.java` 和 `AppTest.java` 分别为应用主类和测试类。
|
4天前
|
数据采集 前端开发 Java
Java医院绩效考核系统源码maven+Visual Studio Code一体化人力资源saas平台系统源码
医院绩效解决方案包括医院绩效管理(BSC)、综合奖金核算(RBRVS),涵盖从绩效方案的咨询与定制、数据采集、绩效考核及反馈、绩效奖金核算到科到组、分配到员工个人全流程绩效管理;将医院、科室、医护人员利益绑定;全面激活人才活力;兼顾质量和效益、长期与短期利益;助力医院降本增效,持续改善、优化收入、成本结构。
19 0
|
4天前
|
Java Maven
Maven 构建 Java 项目
使用Maven的`maven-archetype-quickstart`插件在C:\MVN下创建Java应用,命令包括`groupId`, `artifactId`, 和 `archetypeArtifactId`参数。生成的项目包含src/main/java和src/test/java目录,分别用于存放源代码和测试代码,还有src/main/resources用于资源文件。默认提供App.java主类和AppTest.java测试类。按照预设结构组织文件,Maven将自动管理构建过程。
|
4天前
|
Java 测试技术 项目管理
Java基础教程(22)-构建工具Maven的基本使用
【4月更文挑战第22天】Maven是Java项目管理及构建工具,简化构建、测试、打包和部署等任务。遵循约定优于配置原则,核心是`pom.xml`配置文件,用于管理依赖和项目信息。安装涉及下载、解压、配置环境变量。在IDEA中使用Maven创建项目,通过`pom.xml`添加依赖和管理版本。常用命令包括`clean`、`compile`、`test`、`package`、`install`和`deploy`。IDEA支持直接执行这些命令。
|
4天前
|
Java Maven Kotlin
[AIGC] 请你写一遍博客介绍 “使用idea+kotinlin+springboot+maven 结合开发一个简单的接口“,输出markdown格式,用中文回答,请尽可能详细
[AIGC] 请你写一遍博客介绍 “使用idea+kotinlin+springboot+maven 结合开发一个简单的接口“,输出markdown格式,用中文回答,请尽可能详细
|
4天前
|
Java Apache 项目管理
使用Maven进行Java项目构建与依赖管理
【4月更文挑战第16天】Apache Maven是Java项目的核心构建工具,它基于POM进行项目管理和构建自动化,简化构建过程并管理依赖。Maven提供标准化的目录结构、自动依赖解决、丰富的插件生态、多模块构建支持和版本管理功能。通过安装Maven、创建项目、配置依赖、构建及使用插件,开发者能高效管理Java项目,提升开发效率。了解和掌握Maven对于Java开发者至关重要。

推荐镜像

更多