Maven Pom的一些知识

大部分整(fan)理(yi)自Maven官方网站的DOC Introduction to POM https://maven.apache.org/guides/introduction/introduction-to-the-pom.html

POM( Project Obeject Model )是一个Maven工程中最基本的组件单元,

Minimal POM

POM中可以包含很多标签,其中有一些标签是必须的,只包含这些标签的POM被称为 minimal POM,必须包含的部分包括:

  (1). <project> 根,类似于所有的HTML页面,都包含有<HTML></HTML>

  (2). <modelVersion>,应该被设置为 4.0.4

  (3). <groupId>,项目组的ID

  (4). <artifactId>,articfact(项目)的ID

  (5). <version>, 位于特定组下的项目版本号

以下为一个minimal POM的示例

1 <project>
2   <modelVersion>4.0.0</modelVersion>
3   <groupId>com.mycompany.app</groupId>
4   <artifactId>my-app</artifactId>
5   <version>1</version>
6 </project>

 

1. 项目变量/POM中的变量;

  所有只有单一值的元素都可以作为变量来使用。 ${project.build.sourceDirectory}, ${project.groupId},${project.version},变量的前缀都是project,如果这些变量前缀为pom或者压根没前缀,不要使用它,因为这种形式已经被标注为过时了(@deprecated)

  特殊变量(Special Variables)

  ${project.basedir}  当前工程所在目录

  ${project.baseUri}  当前工程所在目录,以URI形式展示,Maven 2.1.0之后可用

  ${maven.build.timestamp}  timestamp表示build开始时刻,Maven 2.1.0-M 之后可用

  ${maven.build.timestamp}时间戳可以被解释为特定的时间日期格式,但是要再项目<project>块中声明`maven.build.timestamp.format`属性。代码如下:

1 <project>
2   ...
3   <properties>
4     <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss'Z'</maven.build.timestamp.format>
5   </properties>
6   ...
7 </project>

  `maven.build.timestamp.format`的指定格式,与 `java.text.SimpleDateFormat`中的格式一致。如果`maven.build.timestamp.format`没有被指定,那么默认的时间日期格式就是上面所示代码的格式。

  也可以将工程中所定义的属性(properties)作为一个变量使用。官网doc给出的示例,就是将 <properties>定义的`mavenVersion`作为变量使用。

 1 <project>
 2   ...
 3   <properties>
 4     <mavenVersion>2.1</mavenVersion>
 5   </properties>
 6   <dependencies>
 7     <dependency>
 8       <groupId>org.apache.maven</groupId>
 9       <artifactId>maven-artifact</artifactId>
10       <version>${mavenVersion}</version>
11     </dependency>
12     <dependency>
13       <groupId>org.apache.maven</groupId>
14       <artifactId>maven-project</artifactId>
15       <version>${mavenVersion}</version>
16     </dependency>
17   </dependencies>
18   ...
19 </project>

2. 项目继承 Project Inheritance的概念,与示例;

3. 项目继承 Project Aggregation的概念,与示例;

4. POM中的依赖项

  对于一个工程对象模型(Project Object Model),依赖项列表是它的基石——毕竟工程是需要依赖其它不同的工程提供的class或者jar完成编译和运行的。

posted @ 2015-07-30 17:54  王振璇  阅读(588)  评论(0编辑  收藏  举报