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

目录
相关文章
|
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 两种部署到服务器的方式
|
5月前
|
Java Maven 容器
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
java依赖冲突解决问题之Maven在编译打包过程中对依赖的jar包如何解决
|
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

热门文章

最新文章