什麼是 pom.xml(項目對像模型)? 示例 pom.xml 供您在動態 Web 項目 (Java / J2EE) 中使用
已發表: 2021-06-25
什麼是 pom.xml 文件?
POM 表示Project Object Model
。 它是 Maven 中的一個基本工作單元。 pom.xml 文件包含所有配置、依賴項、插件集成和項目設置說明。
這是將任何庫依賴項添加到項目中的最佳方式。 將 .jar 文件複製到項目資源文件夾中是一種舊方法
讓我們詳細了解 pom.xml 文件。
最簡單的默認 pom.xml 文件
1 2 3 4 5 6 7 8 9 10 |
< 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 > com . crunchify . tutorials < / groupId > < artifactId > crunchify - tutorials < / artifactId > < version > 1.0.1 - SNAPSHOT < / version > < / project > |
讓我們回顧一下 pom.xml 元素:
元素 | 描述 |
---|---|
項目 | 元素是描述符的根。 下表列出了所有可能的子元素。 |
型號版本 | 聲明此 POM 符合哪個版本的項目描述符。 將其設置為 4.0.0 版本。 |
組 ID | 項目的通用唯一標識符。 通常使用完全限定的包名稱來將其與具有相似名稱的其他項目區分開來(例如 org.apache.maven)。 |
工件 ID | 此工件的標識符在由組 ID 給出的組內是唯一的。 工件是項目生產或使用的東西。 Maven 為項目生成的工件示例包括:JAR、源代碼和二進制分發以及 WAR。 |
版本 | 此項目生成的工件的當前版本。 |
帶有附加元素的 pom.xml 文件
包含更多元素的 pom.xml 文件:
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 |
< 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 > com . crunchify . tutorials < / groupId > < artifactId > crunchify - tutorials < / artifactId > < version > 1.0.1 - SNAPSHOT < / version > < packaging > jar < / packaging > < name > Crunchify ' s Java Tutorials < / name > < url > https : //crunchify.com</url> < build > < sourceDirectory > src < / sourceDirectory > < finalName > crunchify - tutorial < / finalName > < plugins > < plugin > < groupId > org . apache . maven . plugins < / groupId > < artifactId > maven - compiler - plugin < / artifactId > < version > 3.5.1 < / version > < configuration > < source > 15 < / source > < target > 15 < / target > < / configuration > < / plugin > < / plugins > < / build > < dependencies > < dependency > < groupId > org . glassfish < / groupId > < artifactId > javax . json < / artifactId > < version > 1.0.4 < / version > < / dependency > < dependency > < groupId > com . github . wnameless < / groupId > < artifactId > json - flattener < / artifactId > < version > 0.2.2 < / version > < / dependency > < dependency > < groupId > commons - io < / groupId > < artifactId > commons - io < / artifactId > < version > 2.10.0 < / version > < / dependency > < dependency > < groupId > org . apache . commons < / groupId > < artifactId > commons - lang3 < / artifactId > < version > 3.10 < / version > < / dependency > < / dependencies > < / project > |
元素 | 描述 |
---|---|
包裝 | 該項目產生的工件類型,例如 jar war ear pom。 插件可以創建自己的包裝,因此也可以創建自己的包裝類型,因此此列表不包含所有可能的類型。 |
姓名 | 項目的全名。 |
網址 | 項目主頁的 URL。 |
依賴關係 | 此元素描述與項目關聯的所有依賴項。 這些依賴項用於在構建過程中為您的項目構建類路徑。 它們會自動從該項目中定義的存儲庫中下載。 |
依賴 | 產生依賴的項目組,例如 org.apache.maven。 |
建造 | 構建項目所需的信息。 |
源目錄 | 此元素指定包含項目源的目錄。 生成的構建系統會在項目構建時編譯該目錄下的源碼。 給出的路徑是相對於項目描述符的。 |
最終名稱 | 將調用生成的工件的文件名(不包括擴展名,並且沒有路徑信息)。 默認值為 ${artifactId}-${version}。 |
插件 | 要使用的插件列表。 |
插入 | 存儲庫中插件的組 ID。 |
範圍 | 依賴的範圍——編譯、運行時、測試、系統和提供。 用於計算用於編譯、測試等的各種類路徑。 它還有助於確定在該項目的分發中包含哪些工件。 |
我們在 Crunchify 上發布了 700 多個 Java 教程,並且從一開始就使用 pom.xml 文件,包括 Spring MVC 依賴項。
過去幾年因為添加了越來越多的庫依賴,Crunchify 的 Java 教程 pom.xml 文件現在更大了
這是我們當前的 pom.xml 文件供您參考。 如果您將其複制並添加到您的項目中,那麼這也適用於您。
我們用於 Crunchify 的 Java 教程的 pom.xml 文件
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 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 |
< 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 > com . crunchify . tutorials < / groupId > < artifactId > crunchify - tutorials < / artifactId > < version > 1.0.1 - SNAPSHOT < / version > < packaging > jar < / packaging > < name > Crunchify 's Java Tutorials</name> <url>https://crunchify.com</url> <build> <sourceDirectory>src</sourceDirectory> <finalName>crunchify-tutorial</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>15</source> <target>15</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.1</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.3</version> <configuration> <descriptors> <descriptor>src/assembly/crunchify.xml</descriptor> </descriptors> </configuration> </plugin> </plugins> <pluginManagement> <plugins> <!--This plugin' s configuration is used to store Eclipse m2e settings only . It has no influence on the Maven build itself . -- > < plugin > < groupId > org . eclipse . m2e < / groupId > < artifactId > lifecycle - mapping < / artifactId > < version > 1.0.0 < / version > < configuration > < lifecycleMappingMetadata > < pluginExecutions > < pluginExecution > < pluginExecutionFilter > < groupId > org . apache . maven . plugins < / groupId > < artifactId > maven - compiler - plugin < / artifactId > < versionRange > [ 3.1 , ) < / versionRange > < goals > < goal > compile < / goal > < / goals > < / pluginExecutionFilter > < action > < ignore / > < / action > < / pluginExecution > < pluginExecution > < pluginExecutionFilter > < groupId / > < artifactId / > < versionRange > [ 3.1 , ) < / versionRange > < goals > < goal / > < / goals > < / pluginExecutionFilter > < action > < ignore / > < / action > < / pluginExecution > < / pluginExecutions > < / lifecycleMappingMetadata > < / configuration > < / plugin > < / plugins > < / pluginManagement > < / build > < dependencies > < dependency > < groupId > org . glassfish < / groupId > < artifactId > javax . json < / artifactId > < version > 1.1.4 < / version > < / dependency > < dependency > < groupId > com . github . wnameless . json < / groupId > < artifactId > json - flattener < / artifactId > < version > 0.12.0 < / version > < / dependency > < dependency > < groupId > commons - io < / groupId > < artifactId > commons - io < / artifactId > < version > 2.10.0 < / version > < / dependency > < dependency > < groupId > com . google . code . gson < / groupId > < artifactId > gson < / artifactId > < version > 2.8.7 < / version > < / dependency > < dependency > < groupId > net . jodah < / groupId > < artifactId > expiringmap < / artifactId > < version > 0.5.9 < / version > < / dependency > < dependency > < groupId > org . apache . httpcomponents < / groupId > < artifactId > httpclient < / artifactId > < version > 4.5.13 < / version > < / dependency > < dependency > < groupId > org . json < / groupId > < artifactId > json < / artifactId > < version > 20210307 < / version > < / dependency > < dependency > < groupId > net . spy < / groupId > < artifactId > spymemcached < / artifactId > < version > 2.12.3 < / version > < / dependency > < dependency > < groupId > com . whalin < / groupId > < artifactId > Memcached - Java - Client < / artifactId > < version > 3.0.2 < / version > < / dependency > < dependency > < groupId > com . googlecode . xmemcached < / groupId > < artifactId > xmemcached < / artifactId > < version > 2.4.7 < / version > < / dependency > < dependency > < groupId > com . paypal . sdk < / groupId > < artifactId > rest - api - sdk < / artifactId > < version > LATEST < / version > < / dependency > < dependency > < groupId > org . apache . commons < / groupId > < artifactId > commons - dbcp2 < / artifactId > < version > 2.8.0 < / version > < / dependency > < dependency > < groupId > commons - dbcp < / groupId > < artifactId > commons - dbcp < / artifactId > < version > 20030825.184428 < / version > < / dependency > < dependency > < groupId > javax . ws . rs < / groupId > < artifactId > javax . ws . rs - api < / artifactId > < version > 2.1.1 < / version > < / dependency > < dependency > < groupId > org . hamcrest < / groupId > < artifactId > hamcrest - all < / artifactId > < version > 1.3 < / version > < / dependency > < dependency > < groupId > org . apache . logging . log4j < / groupId > < artifactId > log4j - core < / artifactId > < version > 2.16.0 < / version > < / dependency > < dependency > < groupId > com . google . guava < / groupId > < artifactId > guava < / artifactId > < version > 30.1.1 - jre < / version > < / dependency > < dependency > < groupId > com . googlecode . json - simple < / groupId > < artifactId > json - simple < / artifactId > < version > 1.1.1 < / version > < / dependency > < dependency > < groupId > commons - net < / groupId > < artifactId > commons - net < / artifactId > < version > 3.8.0 < / version > < / dependency > < dependency > < groupId > org . ow2 . asm < / groupId > < artifactId > asm < / artifactId > < version > 9.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.9.4 < / version > < / dependency > < dependency > < groupId > org . apache . commons < / groupId > < artifactId > commons - collections4 < / artifactId > < version > 4.4 < / version > < / dependency > < dependency > < groupId > org . apache . commons < / groupId > < artifactId > commons - configuration2 < / artifactId > < version > 2.7 < / version > < / dependency > < dependency > < groupId > commons - discovery < / groupId > < artifactId > commons - discovery < / artifactId > < version > 0.5 < / version > < / dependency > < dependency > < groupId > org . apache . commons < / groupId > < artifactId > commons - lang3 < / artifactId > < version > 3.12.0 < / version > < / dependency > < dependency > < groupId > commons - logging < / groupId > < artifactId > commons - logging < / artifactId > < version > 1.2 < / version > < / dependency > < dependency > < groupId > commons - logging < / groupId > < artifactId > commons - logging - api < / artifactId > < version > 1.1 < / version > < / dependency > < dependency > < groupId > javax . mail < / groupId > < artifactId > javax . mail - api < / artifactId > < version > 1.6.2 < / version > < / dependency > < dependency > < groupId > javax . mail < / groupId > < artifactId > mail < / artifactId > < version > 1.4.7 < / version > < / dependency > < dependency > < groupId > javax . xml < / groupId > < artifactId > jaxrpc - api < / artifactId > < version > 1.1 < / version > < / dependency > < dependency > < groupId > javax . servlet < / groupId > < artifactId > javax . servlet - api < / artifactId > < version > 4.0.1 < / version > < scope > provided < / scope > < / dependency > < dependency > < groupId > org . apache . 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 > 3.4.1 < / version > < / dependency > < dependency > < groupId > org . apache . commons < / groupId > < artifactId > commons - compress < / artifactId > < version > 1.20 < / version > < / dependency > < dependency > < groupId > mysql < / groupId > < artifactId > mysql - connector - java < / artifactId > < version > 8.0.25 < / version > < / dependency > < dependency > < groupId > org . junit . jupiter < / groupId > < artifactId > junit - jupiter - api < / artifactId > < version > 5.8.0 - M1 < / version > < scope > test < / scope > < / dependency > < dependency > < groupId > ch . qos . logback < / groupId > < artifactId > logback - classic < / artifactId > < version > 1.3.0 - alpha5 < / version > < / dependency > < dependency > < groupId > commons - validator < / groupId > < artifactId > commons - validator < / artifactId > < version > 1.7 < / version > < / dependency > < dependency > < groupId > org . springframework < / groupId > < artifactId > spring - context < / artifactId > < version > 5.3.8 < / version > < / dependency > < dependency > < groupId > org . springframework < / groupId > < artifactId > spring - context - support < / artifactId > < version > 5.3.8 < / version > < / dependency > < dependency > < groupId > org . slf4j < / groupId > < artifactId > slf4j - api < / artifactId > < version > 1.7.31 < / version > < / dependency > < dependency > < groupId > org . slf4j < / groupId > < artifactId > jul - to - slf4j < / artifactId > < version > 1.7.31 < / version > < / dependency > < dependency > < groupId > org . slf4j < / groupId > < artifactId > jcl - over - slf4j < / artifactId > < version > 1.7.31 < / version > < / dependency > < dependency > < groupId > org . slf4j < / groupId > < artifactId > log4j - over - slf4j < / artifactId > < version > 1.7.31 < / version > < / dependency > < / dependencies > < / project > |
我希望這能闡明什麼是 pom.xml 文件以及我們在任何 Java 的 J2EE 項目中使用它的原因。

如果您還有其他問題,請告訴我。
將 Log4j 更新到最新版本
CVE-2021-44228:Apache Log4j2 <=2.14.1 配置、日誌消息和參數中使用的 JNDI 功能不能防止攻擊者控制的 LDAP 和其他 JNDI 相關端點。
從 log4j 2.16.0 開始,默認情況下已禁用此行為。