博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IDEA 快速将spring boot项目打包成jar包,简单快速有效
阅读量:5885 次
发布时间:2019-06-19

本文共 3043 字,大约阅读时间需要 10 分钟。

  原文地址;https://blog.csdn.net/chen846262292/article/details/80701101  https://www.cnblogs.com/chrischennx/p/5119663.html

 

1.spring boot pom.xml清单中的spring-boot-maven-plugin已经包含了我们需简要打包的插件。

  1.  
    <build>
  2.  
    <plugins>
  3.  
    <plugin>
  4.  
    <groupId>org.springframework.boot</groupId>
  5.  
    <artifactId>spring-boot-maven-plugin</artifactId>
  6.  
    </plugin>
  7.  
    </plugins>
  8.  
    </build>

 

只需要修改清单选项的packaging 就可以为我们生成不同的可执行文件。

jar

2.开始使用maven插件进行打包

在IDEA中查找到Maven project模块

 

在需要打包项目的Lifecycle中选择不同的maven命令就可以执行打包了。

打包前先执行以下clear ,打包后的文件将放在项目的target文件夹下

 

 

 

定义: 生命周期是包含在一个项目构建中的一系列有序的阶段

举个例子来说就是maven 对一个工程进行:

验证(validate)

……

编译源码(compile)

……

编译测试源码(test-compile)

……

单元测试(test)

……

打包(package)

……

安装至本地仓库(install)

复制到远程仓库(deploy)

的这个过就是它的一个生命周期,在上面用了很多“……”,是因为中间有些阶段(phase)省掉了(后面会详细介绍)。在一个生命周期中,每一个阶段(phase)可以理解为一个步骤,这些步骤按照既定的顺序执行来完成一个项目的构建。

生命周期中,各个步骤的工作是谁来干的呢,是插件(plugin),一个插件通常完成一个或多个步骤的工作,每个步骤的工作对应插件的一个目标(goal)。不同的插件结合起来,就可以完成整个项目的构建,例如:编译插件,compiler;测试插件,surefire;打包插件,jar;安装插件,install,部署插件,deploy。

document上说,直接执行后面步骤的命令,会把这个步骤前面的所有操作都做一遍,

但是后面又说了,

Moreover, if a goal is bound to one or more build phases, that goal will be called in all those phases.

Furthermore, a build phase can also have zero or more goals bound to it. If a build phase has no goals bound to it, that build phase will not execute. But if it has one or more goals bound to it, it will execute all those goals

(Note: In Maven 2.0.5 and above, multiple goals bound to a phase are executed in the same order as they are declared in the POM, however multiple instances of the same plugin are not supported. Multiple instances of the same plugin are grouped to execute together and ordered in Maven 2.0.11 and above).

英语不好,大概意思应该是,

如果一个目标(goal)被绑定到一个或多个阶段(phase),执行到这个阶段的时候都会调用这个目标(goal),

而且,一个阶段可以有0个以上的目标(goal)绑定,没有目标绑定,就不执行,有几个目标绑定,就执行几个。

(maven 2.0.5+的版本,对于多个goals绑定到一个阶段的,会按照POM中定义的顺序执行,但是不支持一个插件对应多个实例。一个插件多个实例的情况在 maven2.0.11+上才被支持,它们被划为一个组,一起执行)

所以我在想,如果执行了“mvn deploy”,但是没有定义前面的某些阶段,会怎样?等我测试了再补充这个地方(TODO)。

下面详说一下maven的生命周期。

maven,有三个:

Clean Lifecycle  在进行真正的构建之前进行一些清理工作。

Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

Site Lifecycle 生成项目报告,站点,发布站点。

先说简单的两个 Clean Lifecycle 和 Site Lifecycle

Clean Lifecycle

pre-clean  执行一些需要在clean之前完成的工作

clean  移除所有上一次构建生成的文件

post-clean  执行一些需要在clean之后立刻完成的工作

Site Lifecycle

pre-site     执行一些需要在生成站点文档之前完成的工作

site    生成项目的站点文档

post-site     执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy     将生成的站点文档部署到特定的服务器上

然后看,最常用,最重要的,名字却不起眼的

Default Lifecycle

validate    验证工程是否正确,所需的信息是否完整

initialize    初始化构建平台,例如:设置properties或创建目录

generate-sources

process-sources

generate-resources

process-resources  复制并处理资源文件,至目标目录,准备打包

compile    编译源代码

process-classes    源码编译后的后期处理,比如java字节码的增强(优化?)

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources

test-compile    编译测试源代码(默认是test目录下)

process-test-class

test    执行单元测试

prepare-package

package    将工程文件打包为指定的格式,例如JAR,WAR等

pre-integration-test

integration-test    集成测试

post-integration-test

verify    检查package是否有效、符合标准

install    将包安装至本地仓库,以让其它项目依赖。

deploy    将最终的包复制到远程的仓库,以让其它开发人员与项目共享。

 

 

参考:

Introduction to the build lifecycle,maven document,

Maven生命周期详解,juvenshun,

 

你可能感兴趣的文章
Cannot load JDBC driver class 'oracle.jdbc.OracleDriver'
查看>>
Python3 & OpenCV之环境搭建(win10)
查看>>
优雅地使用 mybatis-generator
查看>>
使用Supervisor 管理.net core mvc部署
查看>>
java多线程之延迟初始化
查看>>
webpack配置React开发环境(上)
查看>>
Dubbo 3.0 预览版解读,支持 Filter 链的异步化
查看>>
第190天:js---String常用属性和方法(最全)
查看>>
go-mir v1.0.0 发布 用 Go 结构体标签定义 handler 路由信息的辅助库
查看>>
今年全球游戏市场13%的收入将属于腾讯
查看>>
Git 远程推送被拒绝的一种解决方案
查看>>
《战争论》核心原则
查看>>
阿里云云数据库RDS秒级监控功能解锁,通宵加班找故障将成为过去式
查看>>
Ubuntu常用软件安装(附截图软件、FTP、卸载命令)
查看>>
以太坊MetaMask钱包插件使用教程
查看>>
技术大牛论道HBase 3.0 可能的新特性
查看>>
WPF Binding学习(四) 绑定各种数据源
查看>>
使用Swashbuckle构建RESTful风格文档
查看>>
Keras框架简介
查看>>
CentOS7安装Nginx、MySQL、PHP
查看>>