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

目录
相关文章
|
6天前
|
前端开发 JavaScript Java
Java构建工具-maven的复习笔记【适用于复习】
这篇文档由「潜意识Java」创作,主要介绍Maven的相关知识。内容涵盖Maven的基本概念、作用、项目导入步骤、依赖管理(包括依赖配置、代码示例、总结)、依赖传递、依赖范围以及依赖的生命周期等七个方面。作者擅长前端开发,秉持“得之坦然,失之淡然”的座右铭。期待您的点赞、关注和收藏,这将是作者持续创作的动力! [个人主页](https://blog.csdn.net/weixin_73355603?spm=1000.2115.3001.5343)
21 3
|
5天前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
93 17
Spring Boot 两种部署到服务器的方式
|
2月前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
66 2
|
3月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
292 1
Maven——创建 Spring Boot项目
|
3月前
|
Java 关系型数据库 MySQL
如何使用 maven 创建一个 Spring Boot项目
Maven 是一个强大的项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,提高开发效率。其核心功能包括项目构建和依赖管理。项目构建支持编译、测试、打包和发布等流程,而依赖管理则通过中央仓库、本地仓库和私有服务器获取和管理项目依赖。示例中展示了如何创建第一个 SpringBoot 项目并实现简单接口。
77 1
如何使用 maven 创建一个 Spring Boot项目
|
3月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
120 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
|
2月前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
80 0
|
3月前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
185 4
|
3月前
|
Java 应用服务中间件 Maven
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
403 0