@pastqing
2015-06-30T16:28:41.000000Z
字数 2561
阅读 2764
java
maven
所有的Maven pom文件都继承自一个父POM, 如果没有指定父pom, 则该pom文件继承自根POM。pom文件的集成关系如下图所示:
可以让一个pom文件显式地继承另一个pom文件。这样,可以通过修改公共父pom文件的设置来修改所有子pom文件的设置。这里我们使用parent标签来定义父pom。下面我们具体搭建一个多模块Mavne项目
我们创建一个maven-web项目, 名字叫EducationCloud, 接下来我们在项目目录下创建几个文件夹用来划分我们的模块。它们分别是Education-parent(父模块), Education-core(业务), Education-entity(实体), Education-web(web服务)
目录的划分可以根据需要进行, 我的划分如上
<?xml version="1.0" encoding="UTF-8"?>
<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.EducationCloud</groupId>
<artifactId>EducationCloud</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>Education-parent</module>
<module>Education-core</module>
<module>Education-entity</module>
<module>Education-web</module>
</modules>
<name>EducationCloud</name>
</project>
这里我们说下packaging标签:最常见的就是打包为jar, war了。任何一个Maven项目都需要定义pom文件中的packaging元素, 如果不声明该元素, 则默认打包为jar, 如果定义值为war那么就打包为war包。如果值为pom,那么什么包都不生成(通常用于父模块),如果你想了解packaging后面发生了什么, 点这里。
官方文档在这里Multi-Modules
<parent>
<groupId>com.EducationCloud</groupId>
<artifactId>EducationCloud-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath></relativePath>
</parent>
groupId, aritfactId, version是常规表示父pom位置信息的元素, relativePath是表示父pom位置的相对路径, 默认为../pom.xml, 这里需要注意的是groupId, aritfactId, version必须与父pom文件中的对应起来
<pluginManagement>
<plugins>
<!-- complile插件的配置 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-complier-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
<plugin>
</plugins>
</pluginManagement>
上面我们添加了maven编译插件的配置,用jdk1.7编译, 保存后我们可以在各个子模块的Effective pom中看到相应的修改。
<properties>
<jdkVersion>1.7</jdkVersion>
<servletVersion>3.1.0</servletVersion>
<mysqlVersion>5.1.34</mysqlVersion>
<junitVersion>4.12</junitVersion>
<defaultEncoding>UTF-8</defaultEncoding>
</properties>
引用时用${jdkVersion}的形式引用即可。
注,以上操作均可在IDE中操作, 更加方便简单。