如何使用 Maven 構建包含所有依賴項的 Java 項目? maven-resources、maven-dependency 和 maven-jar 插件
已發表: 2016-11-26
您正在從事企業級 Java 項目嗎? 使用 Maven POM.xml
文件使所有依賴項保持最新? 在您的項目中,您有src folder
、 resources folder
、 lib folder
等嗎? 那麼,如果您想將此項目部署到第三方客戶端怎麼辦? 還有其他獨立硬件嗎?
好吧,有一種簡單的方法可以使用 Maven 插件構建和創建 Java 項目的可執行文件。 看看下面的示例 Java 項目。

讓我們開始吧,讓我解釋一下項目的所有部分:
-
CrunchifyMavenBuildPlugins
是一個 Maven 項目。 如果您有 Java 項目並想將其轉換為 Maven 項目,請按照本教程進行操作。 - 我們確實有兩個文件夾。
src
和resources.
- 在
resources
文件夾中,我們確實有一個名為Scripts
的文件夾,其中包含一個可執行的 shell 腳本文件。 -
CrunchifyMain.java
是一個主要的起點,裡面有main(String args[])
方法。 -
pom.xml
文件,我們將在其中添加 Maven 插件,該插件將構建包含所有依賴項的可執行 .jar 項目。
第1步
打開您的pom.xml
文件並在<build>
下添加以下內容。 注意:我在下面添加了3 個插件。
-
maven-resources-plugin
:資源插件處理將項目資源複製到輸出目錄。 主要資源是與主要源代碼相關聯的資源。 -
maven-dependency-plugin:
依賴插件提供了操作工件的能力。 它可以將工件從本地或遠程存儲庫複製和/或解壓縮到指定位置。 -
maven-jar-plugin:
這個插件提供了構建和簽名 jar 的能力。
這是一個完整的 pom.xml 文件。 主要是你會對 <build> 標籤感興趣。
請根據您的需要在下面更新目錄位置、文件名和路徑。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < groupId > CrunchifyMavenBuildPlugins < / groupId > < artifactId > CrunchifyMavenBuildPlugins < / artifactId > < version > 0.0.1 - SNAPSHOT < / version > < name > CrunchifyMavenBuildPlugins < / name > < properties > < project . build . sourceEncoding > UTF - 8 < / project . build . sourceEncoding > < / properties > < dependencies > < dependency > < groupId > log4j < / groupId > < artifactId > log4j < / artifactId > < version > 2.15.0 < / version > < / dependency > < dependency > < groupId > com . googlecode . json - simple < / groupId > < artifactId > json - simple < / artifactId > < version > 1.1 < / version > < / dependency > < dependency > < groupId > axis < / groupId > < artifactId > axis < / artifactId > < version > 1.4 < / version > < / dependency > < dependency > < groupId > commons - beanutils < / groupId > < artifactId > commons - beanutils < / artifactId > < version > 1.8.3 < / version > < / dependency > < dependency > < groupId > commons - collections < / groupId > < artifactId > commons - collections < / artifactId > < version > 3.2.1 < / version > < / dependency > < dependency > < groupId > commons - configuration < / groupId > < artifactId > commons - configuration < / artifactId > < version > 1.10 < / version > < / dependency > < dependency > < groupId > commons - io < / groupId > < artifactId > commons - io < / artifactId > < version > 2.4 < / version > < / dependency > < dependency > < groupId > javax . mail < / groupId > < artifactId > mail < / artifactId > < version > 1.4.7 < / version > < / dependency > < dependency > < groupId > javax . servlet < / groupId > < artifactId > servlet - api < / artifactId > < version > 2.5 < / version > < / dependency > < dependency > < groupId > org . json < / groupId > < artifactId > json < / artifactId > < version > 20140107 < / version > < / dependency > < dependency > < groupId > axis < / groupId > < artifactId > axis - saaj < / artifactId > < version > 1.4 < / version > < / dependency > < dependency > < groupId > wsdl4j < / groupId > < artifactId > wsdl4j < / artifactId > < version > 1.6.3 < / version > < / dependency > < dependency > < groupId > com . google . zxing < / groupId > < artifactId > core < / artifactId > < version > 2.0 < / version > < / dependency > < / dependencies > < build > < pluginManagement > < plugins > < plugin > < groupId > org . apache . maven . plugins < / groupId > < artifactId > maven - compiler - plugin < / artifactId > < version > 2.3.1 < / version > < configuration > < source > 1.7 < / source > < target > 1.7 < / target > < / configuration > < / plugin > < / plugins > < / pluginManagement > < plugins > < plugin > < artifactId > maven - resources - plugin < / artifactId > < version > 2.6 < / version > < executions > < execution > < id > copy - resources < / id > < phase > validate < / phase > < goals > < goal > copy - resources < / goal > < / goals > < configuration > < outputDirectory > $ { basedir } / target / Crunchify < / outputDirectory > < resources > < resource > < directory > resources < / directory > < filtering > true < / filtering > < / resource > < / resources > < / configuration > < / execution > < / executions > < / plugin > < plugin > < groupId > org . apache . maven . plugins < / groupId > < artifactId > maven - dependency - plugin < / artifactId > < executions > < execution > < id > copy - dependencies < / id > < phase > prepare - package < / phase > < goals > < goal > copy - dependencies < / goal > < / goals > < configuration > < outputDirectory > $ { project . build . directory } / Crunchify / lib < / outputDirectory > < overWriteReleases > false < / overWriteReleases > < overWriteSnapshots > false < / overWriteSnapshots > < overWriteIfNewer > true < / overWriteIfNewer > < / configuration > < / execution > < / executions > < / plugin > < plugin > < groupId > org . apache . maven . plugins < / groupId > < artifactId > maven - jar - plugin < / artifactId > < configuration > < archive > < manifest > < addClasspath > true < / addClasspath > < classpathPrefix > lib / < / classpathPrefix > < mainClass > com . crunchify . tutorial . CrunchifyMain < / mainClass > < / manifest > < manifestEntries > < Class - Path > . < / Class - Path > < / manifestEntries > < / archive > < finalName > Crunchify / Crunchify < / finalName > < / configuration > < / plugin > < / plugins > < / build > < / project > |
第2步
右鍵單擊Project -> Run As -> Maven Build


第三步
提供參數“ clean install
”

第四步
你應該看到類似這樣的結果。

第 5 步
現在檢查文件夾文件夾/target/Crunchify
以檢查其下的所有內容。

第 6 步
現在只需使用以下命令運行您的項目$bash> java -jar Crunchify.jar
如果您在構建項目時遇到任何問題,請告訴我。 享受和快樂的編碼。