IDEA 快速將spring boot項目打包成jar包,簡單快速有效


  原文地址;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 就可以為我們生成不同的可執行文件。

<packaging>jar</packaging>

2.開始使用maven插件進行打包

在IDEA中查找到Maven project模塊

 

在需要打包項目的Lifecycle中選擇不同的maven命令就可以執行打包了。

打包前先執行以下clear ,打包后的文件將放在項目的target文件夾下

 

 

maven生命周期(lifecycle)—— maven權威指南學習筆記(四)

 

定義: 生命周期是包含在一個項目構建中的一系列有序的階段

舉個例子來說就是maven 對一個工程進行:

驗證(validate)

……

編譯源碼(compile)

……

編譯測試源碼(test-compile)

……

單元測試(test)

……

打包(package)

……

安裝至本地倉庫(install)

復制到遠程倉庫(deploy)

的這個過就是它的一個生命周期,在上面用了很多“……”,是因為中間有些階段(phase)省掉了(后面會詳細介紹)。在一個生命周期中,每一個階段(phase)可以理解為一個步驟,這些步驟按照既定的順序執行來完成一個項目的構建。

生命周期中,各個步驟的工作是誰來干的呢,是插件(plugin),一個插件通常完成一個或多個步驟的工作,每個步驟的工作對應插件的一個目標(goal)。不同的插件結合起來,就可以完成整個項目的構建,例如:編譯插件,compiler;測試插件,surefire;打包插件,jar;安裝插件,install,部署插件,deploy。

document上說,直接執行后面步驟的命令,會把這個步驟前面的所有操作都做一遍,

clipboard

但是后面又說了,

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

image

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

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

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

Site Lifecycle

image

pre-site     執行一些需要在生成站點文檔之前完成的工作

site    生成項目的站點文檔

post-site     執行一些需要在生成站點文檔之后完成的工作,並且為部署做准備

site-deploy     將生成的站點文檔部署到特定的服務器上

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

Default Lifecycle

image

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,http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

Maven生命周期詳解,juvenshun,http://juvenshun.iteye.com/blog/213959

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM