用在父级工程或聚合工程中,用来做jar 包的版本控制。
常见pom.xml 配置如下:
<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.0modelVersion>
<groupId>groupNamegroupId>
<artifactId>artifactNameartifactId>
<version>1.0version>
<packaging>pompackaging>
<properties>
<junit.version>4.12junit.version>
properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit groupId>
<artifactId>junit artifactId>
<version>${junit.version}version>
<scope>testscope>
dependency>
dependencies>
dependencyManagement>
<dependencies>
<dependency>
<groupId>junit groupId>
<artifactId>junit artifactId>
<version>${junit.version}version>
<scope>testscope>
dependency>
dependencies>
project>
依赖范围 (scope) |
对于主代码 classpath有效 |
对于测试代码 classpath有效 |
被打包,对于运行时 classpath有效 |
例子 |
---|---|---|---|---|
compile [ 默认 ] | Y | Y | Y | log4j |
provided | Y | Y | - | servlet-api |
test | - | Y | - | junit |
runtime | - | - | Y | JDBC 驱动实现,如 : mysql-connector-java-5.1.7-bin.jar |
将会打包成jar 用作jar 包使用。即常见的本地工程- Java Project 。
常见pom.xml 配置 如下:
<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.0modelVersion>
<groupId>groupNamegroupId>
<artifactId>artifactNameartifactId>
<version>1.0version>
project>
将会打包成war,发布在服务器上的工程。如网站或服务。即常见的网络工程- Dynamic Web Project。
war工程默认没有WEB-INF 目录及web.xml 配置文件,IDE 通常会显示工程错误,提供完整工程结构可以解决。常见pom.xml 配置如下:
<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.0modelVersion>
<groupId>groupNamegroupId>
<artifactId>artifactNameartifactId>
<version>1.0version>
<packaging>warpackaging>
project>
我们想要一次构建两个项目,而不是到两个模块的目录下分别执行mvn
命令 – Maven的聚合。
总工程(POM工程)与各子模块的关系。
当我们开发的工程拥有2 个以上模块的时候,每个模块都是一个独立的功能集合。比如某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译, 测试,运行。这个时候我们就需要一个聚合工程。
在创建聚合工程的过程中,总工程必须是一个POM 工程,各子模块可以是任意类型模块(Maven Module )。
所有聚合工程和聚合模块必须处于同一个组 groupId)中,且聚合工程可以嵌套。
具体pom.xml 文件配置如下:
总工程配置 (superGroup):
modules标签 就是 聚合关系的定义
<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.0modelVersion>
<groupId>superGroupgroupId>
<artifactId>superProjectartifactId>
<version>1.0version>
<packaging>pompackaging>
<modules>
<module>subProject1module>
<module>subProject2module>
modules>
project>
子模块配置 (subProject1):
<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.0modelVersion>
<groupId>superGroupgroupId>
<artifactId>subProject1artifactId>
<packaging>jarpackaging>
<version>1.0version>
project>
subProject2 :
<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.0modelVersion>
<groupId>superGroupgroupId>
<artifactId>subProject2artifactId>
<packaging>jarpackaging>
<version>1.0version>
project>
A工程与B工程是平级关系。
即A工程开发或运行过程中需要B工程提供支持,则代表A 工程依赖B 工程。
在这种情况下,A工程需要在pom.xml 文件中增加下属配置定义依赖关系:
<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.0modelVersion>
<groupId>localPrjectGroupNamegroupId>
<artifactId>localPrjectArtifactNameartifactId>
<version>localPrjectVersionNoversion>
<packaging>packagingTypeNamepackaging>
<dependencies>
<dependency>
<groupId>groupNamegroupId>
<artifactId>artifactNameartifactId>
<version>versionNoversion>
<scope>systemscope>
dependency>
dependencies>
project>
A工程与B工程是子与父关系。
子工程只能有一个父工程。
如果A 工程继承B 工程,则代表A 工程默认依赖B 工程依赖的所有资源,且可以应用B 工程中定义的所有资源信息。
被继承的工程(B工程)只能是POM 工程。具体工程pom.xml 文件配置如下:
父工程配置:(B工程)
<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.0modelVersion>
<groupId>parentGroupgroupId>
<artifactId>parentProjectartifactId>
<version>1.0version>
<packaging>pompackaging>
project>
子工程配置:(A 工程)
parent
标签表示继承关系
子工程,有且只能有一个 parent
<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.0modelVersion>
<parent>
<groupId>parentGroupgroupId>
<artifactId>parentProjectartifactId>
<version>1.0version>
parent>
<groupId>childGroupgroupId>
<artifactId>childProjectartifactId>
<version>1.0version>
project>
Maven 官方有两个插件列表,
第一个列表的GroupId 为 org.apache.maven.plugins
,这里的插件最为 成熟
,
具体地址为:http://maven.apache.org/plugins/index.html 。
第二个列表的GroupId 为 org.codehaus.mojo
,这里的插件没有那么核心,但也有不少十分有用,
其地址为:http://mojo.codehaus.org/plugins.html 。
pom.xml 配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.2version>
<configuration>
<source>1.7source>
<target>1.7target>
<encoding>UTF-8encoding>
configuration>
plugin>
plugins>
build>