1  概念介绍

    一个项目所有的配置都放置在 POM 文件中:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。比如说,你可以配置 compiler 插件让它使用 java1.5 来编译。

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.mycompany.helloworld</groupId>
  5. <artifactId>helloworld</artifactId>
  6. <version>1.0-SNAPSHOT</version>
  7. <packaging>jar</packaging>
  8. <name>helloworld</name>
  9. <url>http://maven.apache.org</url>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. </properties>
  13. <dependencies>
  14. <dependency>
  15. <groupId>junit</groupId>
  16. <artifactId>junit</artifactId>
  17. <version>3.8.1</version>
  18. <scope>test</scope>
  19. </dependency>
  20. </dependencies>
  21. </project>
  <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.mycompany.helloworld</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging> <name>helloworld</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

    在 POM 中,groupId,artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个构件。有了 maven 坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。

    

    通常,大项目一般会分成几个子项目。在这种情况下,每个子项目就会有自己的 POM 文件,然后它们会有一个共同的父项目。这样只要构建父项目就能够构建所有的子项目了。子项目的 POM 会继承父项目的 POM。另外,所有的 POM都继承了一个 Super-POM。Super-POM 设置了一些默认值,比如在前面提到的默认的目录结构,默认的插件等等,它遵循了惯例优于配置的原则。如下图:

    

  2  Pom文件的继承与聚合

  继承

    开发中一般将公共的配置——依赖关系(包括公共的类库、插件、信息配置)放到一个父项目的pom文件,然后其它项目的pom文件,都继承该pom文件。继承的代码如下:

    

    这里需要注意,子pom文件不是一旦继承了父pom就会无条件地继承它所有的依赖关系,即插件、类库等。如果子pom想继承父pom的某个插件,只需要引入父pom中该插件的groupId与artifactId信息(不用写该插件其它的配置信息)即可。这样子pom是可以有选择性的继承它自己所需要的东西。

    

  聚合

    即大项目中一般会有一个空的Maven项目(只有pom文件,没有Java代码)作为父项目,该项目的Pom文件(Modules标签中)聚合了其它子项目的Pom文件,然后只要构建父项目就能够构建所有的子项目了。

    

最新文章

  1. struts2类型转换
  2. 通过3个Hello World应用来了解ASP.NET 5应用是如何运行的(1)
  3. Android targetSdkVersion 对生命周期的影响
  4. apache开启.htaccess及.htaccess的使用方法(转)
  5. Python自动化 【第九篇】:Python基础-线程、进程及python GIL全局解释器锁
  6. 改变tableView索引颜色
  7. [HtmlUnit]Fetch Dynamic Html/Content Created By Javascript/Ajax
  8. U-boot的环境变量值得注意的有两个: bootcmd 和bootargs
  9. css3选择器——导图篇
  10. POJ 3565 Ants (最小权匹配)
  11. 对LR analysis的平均事务响应时间和summary中时间值不同的解释
  12. OPENSHIFT MYSQL使用Navicat连接配置
  13. gulp入门学习实例
  14. .net 中的DllImport
  15. JSTL解析——001
  16. error C2448 函数样式初始值设定项类似函数定义
  17. Java语言中IO流的操作规律学习笔记
  18. 【转载】mysql binlog日志自动清理及手动删除
  19. SQL Server 表的管理_关于完整性约束的详解(案例代码)
  20. python爬取365好书中小说

热门文章

  1. leetcode 99 Recover Binary Search Tree ----- java
  2. JavaWeb学习记录(二十七)——定时发送邮件ServletContextListener监听实现
  3. linux权限管理_ACL权限
  4. HDU 1024 Max Sum Plus Plus --- dp+滚动数组
  5. 5-1 源码包与RPM包的区别
  6. 关于linux软连接
  7. java 动态代码生成。
  8. android屏蔽软键盘并且显示光标
  9. 03-Java String字符串详解
  10. 添加和删除节点(HTML 元素)。