maven打jar包命令詳解

一、maven簡介

Maven是一個基於項目對象模型(POM)概念的項目管理工具,它可以管理項目的構建、報告和文檔化等工作。在Maven管理的項目中,開發人員只需要關注自己的代碼,而開發出的代碼會被統一編譯、測試、打包和部署,使得整個開發過程變得更加規範、高效。

Maven可以自動處理依賴關係,它通過在一些公共的倉庫中查找相關的依賴,自動下載需要的依賴Jar包。在項目構建、編譯、測試和部署時,只需要在POM文件中配置一些基本信息,即可將這些依賴自動引入到當前項目中。

Maven是一種約定優於配置的開發和部署方式,它為Java項目提供了一種可重複、可擴展的構建過程,尤其適用於多模塊項目。

二、maven打jar包命令

在Maven中,使用以下命令可以將項目打包成Jar包:

    mvn package

在執行該命令時,Maven會搜索項目的POM文件,找到其中的<packaging>標籤,並且判斷其值是否為”jar”。如果是,則執行如下打包操作:

  1. 編譯項目的代碼
  2. 打包項目的class文件和資源文件到指定的jar包中
  3. 將項目依賴的Jar包也打包到指定的Jar包中

如果POM文件中沒有配置<packaging>標籤,則默認為”jar”。

三、maven打可執行Jar包命令

在某些情況下,我們需要將項目打包成可執行的Jar包,執行如下命令即可:

    mvn package && java -jar target/xxxx.jar

該命令會先使用mvn package打包項目成Jar文件,然後使用java -jar命令執行剛剛打包好的Jar文件,使其成為可執行的Jar包。

該命令需要注意兩點:

  1. Java應該安裝在系統中並正確配置了環境變量
  2. xxxx.jar應該替換為該項目打包成的Jar包名稱

四、maven打jar包並跳過測試

在使用Maven打包時,往往需要執行一系列的測試用例,但是有時候我們並不需要執行它們,只關心打包的結果,此時可以使用如下命令跳過測試:

    mvn package -Dmaven.test.skip=true

該命令在執行打包命令時會跳過所有測試用例的執行,並直接將項目源代碼編譯成Jar文件。

五、maven打jar包並指定額外的依賴包

在Maven打包時,有時我們需要將一些外部的依賴包打包成Jar文件一併使用,可以使用如下命令來完成:

    mvn package assembly:single

該命令會執行一下操作:

  1. 編譯項目的源代碼和依賴關係
  2. 將項目的編譯結果打包成一個Jar包
  3. 將該項目依賴在pom.xml中定義的外部依賴,以及在plugin里定義的一些外部依賴打成一個獨立的Jar包,並且命名為original-xxxx.jar,將其放置在項目的target文件夾內

該命令在執行完畢後,可以在項目的target目錄下找到打包好的Jar包和其他依賴的Jar文件。

六、maven打jar包並排除指定的依賴包

在某些情況下,我們不希望將某些依賴包打包到最終的Jar文件中,可以使用如下命令排除指定的依賴包:

    <dependencies>
        <dependency>
            <groupId>xxxx</groupId>
            <artifactId>yyyy</artifactId>
            <version>zzzz</version>
            <exclusions>
                <exclusion>
                    <groupId>excludeGroupId</groupId>
                    <artifactId>excludeArtifactId</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

使用<exclusion>標籤可指定需要排除的依賴包,在該標籤中指定該依賴包的groupId和artifactId即可。

七、maven打jar包並將依賴包打進lib文件夾

在某些情況下,我們需要將項目的依賴Jar包與項目Jar包分開存放,可以使用如下命令將所有外部依賴Jar包打包到lib文件夾中:

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

在POM文件中添加上述代碼片段,將項目的所有依賴Jar文件打包到lib文件夾中。

八、總結

本文主要介紹了Maven打Jar包命令的相關操作,包括普通Jar包、可執行Jar包、排除指定依賴包、指定額外依賴包、將依賴Jar包打包進lib文件夾等命令的使用方法,希望對讀者有所幫助。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/151288.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-11 13:40
下一篇 2024-11-11 13:40

相關推薦

  • Git config命令用法介紹:用正確的郵箱保障開發工作

    本文將詳細介紹如何使用git config命令配置Git的全局和本地用戶信息,特別是如何正確使用用戶郵箱,保障Git操作的正常進行。 一、git config命令介紹 Git中的每…

    編程 2025-04-29
  • Python命令大全及說明

    Python是一種高級編程語言,由Guido van Rossum於1989年底發明。它具有良好的語法結構和面向對象的編程思想,具有簡潔、易讀、易學的特點,是初學者以及專業開發人員…

    編程 2025-04-29
  • Python SSH 遠程執行命令

    Python SSH 遠程執行命令是指在一個服務器上執行遠程另一個服務器上命令。如果你需要在本地機器上執行命令,或者在遠程機器上執行本地命令,你都可以使用 SSH。在 Python…

    編程 2025-04-29
  • 剖析命令執行函數

    在編程開發過程中,命令執行函數是非常常見的一個概念。它是指接受一個命令字符串,並將其解析執行,返回相應的結果或錯誤信息的函數。本文將從多個方面對命令執行函數進行詳細的闡述,包括其定…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python中獲取用戶輸入命令的方法解析

    本文將從多個角度,分別介紹Python中獲取用戶輸入命令的方法,希望能夠對初學者有所幫助。 一、使用input()函數獲取用戶輸入命令 input()是Python中用於獲取用戶輸…

    編程 2025-04-27
  • Python3 執行 cmd 命令用法介紹

    本文將詳細講解如何使用Python3執行cmd命令,包括使用subprocess模塊、os模塊、Popen方法、system方法等多個方面的實現方法。 一、使用subprocess…

    編程 2025-04-27
  • 全面解析Python直接命令更新

    本文將從多個方面對Python直接命令更新進行詳細闡述,包括更新命令的基本用法、更新過程中可能遇到的問題及其解決方法等等。 一、更新命令基本用法 Python直接命令更新是一種非常…

    編程 2025-04-27
  • Python啟動命令用法介紹

    Python是一門解釋型語言,與許多編譯型語言不同,它不需要編譯成機器碼,而是通過解釋器一行一行讀取程序,逐句翻譯成目標代碼然後運行。因此,對於Python程序員來說,學會如何正確…

    編程 2025-04-27
  • 如何解決linux jar包 invalid or corrupt jarfile問題

    對於許多開發人員和系統管理員在Linux環境下使用Java開發過程中遇到的一個常見的問題是 invalid or corrupt jarfile(無效或損壞的jar文件)錯誤。當您…

    編程 2025-04-27

發表回復

登錄後才能評論