本章介紹了maven的核心pom.xml作用,詳細描述了maven坐標變量。
POM是項目對象模型(PRoject Object Model)的簡稱,它是Maven項目中的文件,使用XML表示,名稱叫做pom.xml。maven項目中,除了一堆代碼文件和跟項目有關的依賴文件外,還會包含一個pom.xml配置文件,這個文件配置了maven打包、編譯、版本、路徑等等的信息。其實,maven項目可以什么都沒有,甚至沒有代碼,但是必須包含pom.xml文件。
maven坐標為各種構件引入了秩序,任何一個構件都必須明確定義自己的坐標,一組maven坐標包含:groupId、artifactId、version、packaging、classifier
| 坐標值 | 介紹 |
|---|---|
| groupId | 定義當前maven項目隸屬的實際項目,一個實際項目會有一個或多個maven項目。例如:springframework這一實際項目,包含多個maven項目,如spring-core、spring-aop、spring-beans、spring-webmvc等等。 |
| artifactId | 定義一個實際項目中的maven項目(模塊),建議使用實際項目為前綴,例如org.hibernate。 |
| version | 定義maven項目當前的版本。 |
| packaging | 定義maven項目的打包方式。一般有jar、war、pom等。 |
| classifier | 定義maven在相同版本下針對不同的環境或者jdk使用的jar。 |
基礎標簽描述了項目的坐標和其他信息。
<modelVersion>4.0.0</modelVersion> <groupId>com.xxx</groupId> <artifactId>xxx_api</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>xxx_api Maven Webapp</name> <url>http://maven.apache.org</url>繼承標簽描述了父項目的坐標和路徑
<parent> <groupId>com.crm</groupId> <artifactId>crm-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../crm-parent/pom.xml</relativePath></parent>聚合標簽描述了需要管理的子項目的路徑
<modules> <module>../crm-dao</module> <module>../crm-service</module> <module>../crm-web</module></modules><dependencies> <dependency> <groupId> javax.servlet </groupId> <artifactId>jstl/artifactId> <version>1.2</version> </dependency> ……</dependencies><build> <finalName>crm-web </finalName> <resources> <resource> <directory>${basedir}/src/${env}/resources</directory> </resource> </resources> <outputDirectory>${basedir}/src/main/webapp/WEB-INF/classes</outputDirectory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <warName>xxxxxx</warName> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> </plugins></build>resources:描述工程中資源的位置。
outputDirectory:項目輸出路徑,默認情況下,項目的編譯class是放在${basedir}/target下。
plugin:插件標簽,描述項目工程需要的插件和插件的配置。
configuration:插件的一些配置信息。
${basedir}項目根目錄 ${project.build.directory} 構建目錄,缺省為target ${project.build.outputDirectory}構建過程輸出目錄,缺省為target/classes ${project.build.finalName}產出物名稱,缺省為${project.artifactId}-${project.version} ${project.packaging} 打包類型,缺省為jar ${project.xxx}當前pom文件的任意節點的內容
版權聲明:本文為博主原創文章,未經博主允許不得轉載。
新聞熱點
疑難解答