spring-boot-maven-plugin 打包 fastjar原理,mvn 打包原理,插件原理

SpringBoot 插件 spring-boot-maven-plugin 原理,以及SpringBoo工程部署的 jar 包瘦身实战

关于原理上面这篇文章写得很详细

Maven基本操作详解

关于Maven详细可以看这篇

1、mvn命令
     目录的target目录保存编译后的文件

命令功能
mvn clean清除target目录(编译的文件,即xxx.class文件)
mvn complie 编译src\main\java,生成target目录(xxx.java->xxx.class)
mvn test 执行第2命令,编译测试项目和项目,在target目录下多生成test-classes目录
mvn package 执行第2-3条命令,并打包项目,打成war还是jar要看pom.xml的packgeing标签
mvn install执行第2-第4条命令,并且在把项目jar包安装在本地仓库
mvn deploy 执行第2-第5条命令,发布项目

2、maven的概念模型

  • (1)第一部分项目的坐标和自身的相关信息
  • (2)第二部分,配置项目运行所依赖的jar包
  • (3)第三部分,配置项目运行环境所需要的插件

1. pom.xml:

标签信息
dependencies标签之前的信息项目自身信息
dependencies标签内运行时所依赖的jar包信息
build标签内

项目运行环境信息,比如jdk,tomcat

2. 依赖管理模型:
放置的都是jar包坐标:

标签信息
groupId公司组织的名称
artifactId项目名
version版本号
scope作用域,常用于解决jar包冲突问题

3.plug.in:
在maven的默认生命周期里,调用的构建命令都由maven的plug in插件去实现,达到一键构建的效果。

3、自我理解:

maven是一个服务于Java台的自动化工具。自动化在哪里呢?

(测试、部署、编译、打包、管理包)

1、以前我们需要什么工具就要往项目导入对应的jar包。这种情况下如果是多人开发,就会导致项目整合后会有大量重复的jar包,使得项目变得臃肿重复。而Maven提供一个中央仓库,把各类工具包都放在了中央仓库。整合之后直接从仓库拉去就好

2、提供一键化的清除打包上传功能,但是它默认的打包功能(maven package)是不会将项目所依赖的jar包一同打包的。可以去看看打包的jar里面有没有lib目录,这个目录里面就是存放依赖包的。    意思是如果B项目需要A.jar包才能跑起来,而C项目需要B项目才能跑,你在用它自带的maven package打包B项目的时候,B.jar里面是没有A.jar的。所以把B.jar给C项目也没用,根本跑步起来。

这时候就要用到maven的打包插件了(spring-boot-maven-plugin),然后就直接maven package会将所需要的依赖导入jar包里了(lib里面),同时生成jar.original原始jar包,即不包含任何所需要的依赖。

注意:如果你的项目没有继承spring-boot-starter-parent 这个POM,你需要做如下配置,将目标绑定到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>

这里是我打包项目时遇到的Bug

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AngleoLong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值