模板

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <!-- The Basics -->
  7. <groupId>...</groupId>
  8. <artifactId>...</artifactId>
  9. <version>...</version>
  10. <packaging>...</packaging>
  11. <dependencies>...</dependencies>
  12. <parent>...</parent>
  13. <dependencyManagement>...</dependencyManagement>
  14. <modules>...</modules>
  15. <properties>...</properties>
  16. <!-- Build Settings -->
  17. <build>...</build>
  18. <reporting>...</reporting>
  19. <!-- More Project Information -->
  20. <name>...</name>
  21. <description>...</description>
  22. <url>...</url>
  23. <inceptionYear>...</inceptionYear>
  24. <licenses>...</licenses>
  25. <organization>...</organization>
  26. <developers>...</developers>
  27. <contributors>...</contributors>
  28. <!-- Environment Settings -->
  29. <issueManagement>...</issueManagement>
  30. <ciManagement>...</ciManagement>
  31. <mailingLists>...</mailingLists>
  32. <scm>...</scm>
  33. <prerequisites>...</prerequisites>
  34. <repositories>...</repositories>
  35. <pluginRepositories>...</pluginRepositories>
  36. <distributionManagement>...</distributionManagement>
  37. <profiles>...</profiles>
  38. </project>

基本配置

modelVersion Maven模块版本,目前我们一般都取值4.0.0
groupId 分组名称,一般域名倒叙。
artifactId 项目名称或子模块名称。
version 版本号
- *-SNAPSHOT 不稳定版本


- 存放在快照仓库,构建时远程抓取
- *-RELEASE 稳定版本
- 存放在正式仓库,构建的时会先在本次仓库中查找是否已经有了这个依赖库,如果没有的话才会去远程仓库中去拉取
| | name | 项目名称 | | description | 项目描述 | | packaging | 打包类型,可取值:jar,war,maven-plugin等等,这个配置用于package的phase,具体可以参见package运行的时候启动的plugin, |

parent

继承父类

  1. <parent>
  2. <groupId>com.yuyu</groupId>
  3. <artifactId>yuyu-nexus-parent-pom</artifactId>
  4. <version>0.0.2.RELEASE</version>

modules

声明子模块

  1. <modules>
  2. <module>sales-mall</module>
  3. <module>sales-middle</module>
  4. </modules>

Dependencies

项目所需要的依赖包

groupId 依赖项的groupId
artifactId 依赖项的artifactId
version 依赖项的版本
scope 依赖项的适用范围:
- compile,缺省值,适用于所有阶段,会随着项目一起发布。


- provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
- runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
- test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
- system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。之前例子里的junit就只用在了test中。
| | exclusions | 排除项目中的依赖冲突时使用。 |

exclusions
  1. 排除告诉Maven不要包括指定的项目依赖的这种依赖性(换句话说,它的传递依赖)。例如,maven-embedder需要maven-core,我们不希望使用它或其依赖项,然后我们将它排除。
  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.maven</groupId>
  4. <artifactId>maven-embedder</artifactId>
  5. <version>2.0</version>
  6. <exclusions>
  7. <exclusion>
  8. <groupId>org.apache.maven</groupId>
  9. <artifactId>maven-core</artifactId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>
  13. ...
  14. </dependencies>
  1. 它有时也有用片段依赖的传递依赖关系。依赖可能错误地指定的范围,与其他依赖或依赖项冲突在您的项目。使用通配符不便于排除所有依赖的传递依赖项。在下面的情况下你可能会使用maven-embedder和你想管理依赖你自己使用,所以你剪辑传递依赖关系:
  1. <dependency>
  2. <groupId>org.apache.maven</groupId>
  3. <artifactId>maven-embedder</artifactId>
  4. <version>3.1.0</version>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>*</groupId>
  8. <artifactId>*</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>

build

构建

  1. <build>
  2. <finalName>sales-middle-service</finalName>
  3. <resources>
  4. <resource>
  5. <directory>${project.basedir}/src/main/resources</directory>
  6. <includes>
  7. <include>**/*.properties</include>
  8. <include>**/*.xml</include>
  9. </includes>
  10. <filtering>false</filtering>
  11. </resource>
  12. <resource>
  13. <directory>${project.basedir}/src/main/java</directory>
  14. <includes>
  15. <include>**/*.properties</include>
  16. <include>**/*.xml</include>
  17. </includes>
  18. <filtering>false</filtering>
  19. </resource>
  20. </resources>
  21. </build>
finalName 项目打包后的名字
resources 配置文件
filter 可以把属性写到文件里,用属性文件里定义的属性做替换