Java--SpringBoot-14-Spring Boot Maven Plugin-05

简介: Spring Boot Maven Plugin 最主要的goals是repackage,它可以在maven打包完成以后,再重新打包成可执行的包!

Spring Boot Maven Plugin 最主要的goals是repackage,它可以在maven打包完成以后,再重新打包成可执行的包!

$mvnspring-boot:repackage

有很多的参数,直接贴代码,里面有注释及使用示例,如下:

<build><!--打好的包名--><finalName>${app.name}</finalName><plugins><!--配置这个能打出一个没有重新打包的源包由于maven-jar-plugin和spring-boot-maven-plugin运行都处于同一阶段,因此必须首先定义jar插件(以便在重新包装目标之前运行)本插件用于指定本项目生成的jar包中的MANIFEST.MF文件中的配置,如Class-Path和Main-Class--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.0</version><executions><execution><goals><goal>jar</goal></goals><phase>package</phase><configuration><classifier>source</classifier></configuration></execution></executions></plugin><plugin><!--https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-maven-plugin --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.4.5</version><executions><execution><!--不配置默认就是repackage--><id>repackage</id><!--目标是打成包含依赖的可执行包--><goals><goal>repackage</goal></goals><configuration><!--必填参数打包的目录路径默认${project.build.directory}  --><outputDirectory>${project.build.directory}</outputDirectory><!--以下皆是可选参数attachbooleantrue将重新打包的归档文件附加到要安装到本地Maven存储库中或部署到远程存储库中。如果未配置分类器,它将替换普通的jar。如果对aclassifier进行了配置,以使普通jar和重新包装的jar不同,则它将与普通jar一起连接。当该属性设置false为时,将不会安装或部署重新打包的存档。--><attach>true</attach><!--classifier无默认值要添加到重新打包的归档中的分类器。默认情况下,也就似乎表示为应用程序的模块时,repackagegoals用重新打包的goals替换原始包。但是如果您的模块被用作另一个模块的依赖项,您需要为重新打包的模块提供一个分类器。原因是应用程序类被打包在BOOT-INF/class中,这样依赖模块就不能加载重新打包的jar类。如果希望保留原始包并使用其他分类器附加重新包装的包,就启用并配置attachclassifier如果没有给出,重新打包的可执行包会覆盖源包,也就是相当于没有分类。如果给定了分类器,它还将用于确定要重新打包的源归档:
如果已经存在具有该分类器的artifact,它将被用作源并被替换。如果不存在这样的artifact,主artifact将被用作源,重新打包的档案将作为补充artifact与该分类器连接。附加artifact允许将其部署到原始artifact旁边。--><classifier>exec</classifier><!--输出时间戳,格式为ISO8601(yyyy-MM-dd’T’HH:mm:ssXXX)或表示自该时期以来的秒数默认${project.build.outputTimestamp} --><outputTimestamp>${project.build.outputTimestamp}</outputTimestamp></configuration></execution></executions><configuration><!--去除开发工具,加入这个后打好的包中lib下不会有devtools包属性:spring-boot.repackage.excludeDevtools--><excludeDevtools>true</excludeDevtools><!--两种排除依赖项方法默认情况下,repackage和run目标都将包括provided项目中定义的任何依赖项。SpringBoot项目应将provided依赖项视为运行应用程序所需的“容器”依赖项。其中的某些依赖项可能根本不需要,应从可执行jar中排除。为了保持一致,它们在run应用程序时也不应出现。--><!--1.排除特定的groupIdandartifactId要排除的artifact定义的集合。该Exclude元素定义强制性groupId和artifactId性质和可选classifier性。属性:spring-boot.excludes--><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes><!--2.排除属于给定groupId的任何依赖。用逗号分隔的要排除的groupId名称列表(完全匹配)。属性:spring-boot.excludeGroupIds<excludeGroupIds>com.xing.test</excludeGroupIds>--><!--上面时排除下面引入要包含的依赖定义的集合。属性:spring-boot.includes<includes><include><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></include></includes>--><!--包括系统范围的依赖项。默认false--><includeSystemScope>false</includeSystemScope><!--主类的名称。如果未指定,将使用找到的第一个包含main方法的已编译类。声明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><layers><!--禁用分层打包false--><enabled>true</enabled><configuration>${project.basedir}/src/main/resources/layers.xml</configuration></layers><!--跳过执行。默认false属性:spring-boot.repackage.skip卧槽,跳过那肯定就不repackage了--><skip>false</skip><!--还有一些参数,不玩了。。。embeddedLaunchScriptFile如果完全可执行,嵌入式启动脚本将位于jar的前面。如果未指定,将使用“SpringBoot”默认脚本。embeddedLaunchScriptPropertiesProperties应该在嵌入式启动脚本中展开的属性。executable默认false通过在jar前面添加一个启动脚本,为*nix机器创建一个完全可执行的jar。目前,有些工具不接受这种格式,因此可能无法始终使用这种技术。例如,jar-xf可能会无声无息地无法提取一个完全可执行的jar或war。建议您仅在打算直接执行时启用此选项,而不是用java-jar运行它或将其部署到servlet容器中。layoutLayoutType存档的类型(与依赖关系在内部的布局方式相对应)。可能的值是JAR,WAR,ZIP,DIR,NONE。默认为基于存档类型的猜测。属性:spring-boot.repackage.layoutlayoutFactoryLayoutFactory如果未设置显式布局,将用于创建可执行存档的布局工厂。第三方可以提供替代布局的实现。requiresUnpackList为了运行,必须从fatjars中打开的库的列表。将每个库指定为具有<groupId><artifactId><dependency>,它们将在运行时被解包。--></configuration></plugin></plugins></build>

香河肉饼还行,吃肉一时爽,一直吃肉一直爽!


END

目录
相关文章
|
2月前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
46 0
|
2月前
|
IDE Java Maven
Spring Boot之如何解决Maven依赖冲突Maven Helper 安装使用
Spring Boot之如何解决Maven依赖冲突Maven Helper 安装使用
14 2
|
1天前
|
Java 测试技术 项目管理
Java基础教程(22)-构建工具Maven的基本使用
【4月更文挑战第22天】Maven是Java项目管理及构建工具,简化构建、测试、打包和部署等任务。遵循约定优于配置原则,核心是`pom.xml`配置文件,用于管理依赖和项目信息。安装涉及下载、解压、配置环境变量。在IDEA中使用Maven创建项目,通过`pom.xml`添加依赖和管理版本。常用命令包括`clean`、`compile`、`test`、`package`、`install`和`deploy`。IDEA支持直接执行这些命令。
|
7天前
|
Java Maven Kotlin
[AIGC] 请你写一遍博客介绍 “使用idea+kotinlin+springboot+maven 结合开发一个简单的接口“,输出markdown格式,用中文回答,请尽可能详细
[AIGC] 请你写一遍博客介绍 “使用idea+kotinlin+springboot+maven 结合开发一个简单的接口“,输出markdown格式,用中文回答,请尽可能详细
|
13天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
28 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
15天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
【Spring系列】Sping VS Sping Boot区别与联系
|
15天前
|
Java Apache 项目管理
使用Maven进行Java项目构建与依赖管理
【4月更文挑战第16天】Apache Maven是Java项目的核心构建工具,它基于POM进行项目管理和构建自动化,简化构建过程并管理依赖。Maven提供标准化的目录结构、自动依赖解决、丰富的插件生态、多模块构建支持和版本管理功能。通过安装Maven、创建项目、配置依赖、构建及使用插件,开发者能高效管理Java项目,提升开发效率。了解和掌握Maven对于Java开发者至关重要。
|
19天前
|
Java 应用服务中间件 Maven
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
使用IDEA搭建SpringMVC环境,Maven导入了依赖,但是运行报错 java.lang.ClassNotFoundException
14 1
|
21天前
|
Java Maven Spring
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)2
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)
18 2
|
21天前
|
Java Maven 开发工具
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)1
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)
21 2