Maven小白--依赖的聚合和继承(八)

一、Maven的聚合

每个项目都会有多个模块,每个模块单独是一个Jar包,最后继承的时候,每个jar都要各自打包才能使用,非常繁琐。所以,Maven提出了一个聚合的概念,即可以同时打包多个项目。如何操作呢?


1)简单来做,在所有项目的同级目录下,新建一个pom.xml文件,修改pom.xml文件,添加<module>..</module>属性,执行mvn clean package指令即可。

 <!-- 导入了三个模块,把这三个模块聚合在一起了 -->
  <modules>
  	<module>user-core</module>   --根目录
  	<module>user-log</module>
  	<module>user-service</module>
  </modules>

2)在MyEclipse里面怎么操作呢?

1、新建一个Maven项目,勾选Create a simple project

2、Packaging,选择pom类型

3、修改pom.xml文件,添加<module>..</module>节点

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ly.user</groupId>
  <artifactId>user-aggregation</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  
  <!-- 导入了三个模块,把这三个模块聚合在一起了 -->
  <modules>
  	<module>../user-core</module>
  	<module>../user-log</module>
  	<module>../user-service</module>
  </modules>
</project>

4、执行mvn clean package指令 ,即可发现已经同时打包了2个项目(由于user-core有点问题,没有参与此次打包)。


二、Maven的继承

继承的绝对路径是pom文件;聚合是模块的位置。

因为每个子模块的pom.xml之间存在大量重复的属性,所以提出继承的概念,即创建一个父类的pom.xml文件。

1)在MyEclipse里面怎么操作呢?

1、新建一个Maven项目(user-parent),勾选Create a simple project

2、Packaging,选择pom类型

3、修改pom.xml文件,将每个子模块相同的部分提取到父类pom.xml中

比如属性:<url>http://www.example.com</url>   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>等

同时删除子模块中相同的属性

4、在每个子模块的pom.xml中添加parent节点

5、依赖的继承 ,添加dependencyManagement节点(依赖管理)

  • 父类pom.xml管理依赖,包括依赖的版本及作用域;子类中可删除版本及作用域节点

三、Maven的聚合与继承统一放到pom.xml文件中


代码参考:

user-parent的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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ly.firstMaven</groupId>
  <artifactId>user-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  
  <!-- 导入了三个模块,把这三个模块聚合在一起了 -->
  <modules>
  	<!--  <module>../user-core</module>-->
  	<module>../user-log</module>
  	<module>../user-service</module>
  </modules>
  
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
  
  <dependencyManagement>
  	<dependencies>
	    <dependency>
	      <groupId>junit</groupId>
	      <artifactId>junit</artifactId>
	      <version>4.11</version>
	      <scope>test</scope>
	    </dependency>
	    <dependency>
	      <groupId>org.hibernate</groupId>
	      <artifactId>hibernate-core</artifactId>
	      <version>4.1.10.Final</version>
	    </dependency>
		<dependency>
	        <groupId>oracle</groupId>
	        <artifactId>ojdbc7</artifactId>
	        <version>12.1.0.2.0</version>
	        <scope>system</scope>
	        <systemPath>${project.basedir}/lib/ojdbc7.jar</systemPath>
	    </dependency>
		<!-- https://mvnrepository.com/artifact/log4j/log4j -->
		<dependency>
		    <groupId>log4j</groupId>
		    <artifactId>log4j</artifactId>
		    <version>1.2.17</version>
		</dependency>
		<dependency>
			<groupId>dbunit</groupId>
			<artifactId>dbunit</artifactId>
			<version>2.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
		<dependency>
		    <groupId>commons-logging</groupId>
		    <artifactId>commons-logging</artifactId>
		    <version>1.2</version>
		</dependency>
		 <!-- https://mvnrepository.com/artifact/org.easymock/easymock -->
		<dependency>
		    <groupId>org.easymock</groupId>
		    <artifactId>easymock</artifactId>
		    <version>4.0.2</version>
		    <scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>${project.groupId}</groupId>
		    <artifactId>user-log</artifactId>
		    <version>${project.version}</version>
		    <!-- 依赖排除 -->
		    <exclusions>
		    	<exclusion>
		    	 	<groupId>commons-logging</groupId>
		    		<artifactId>commons-logging</artifactId>
		    	</exclusion>
		    </exclusions>
		</dependency>
	  </dependencies>
  </dependencyManagement>
</project>

user-core的pom.xml文件:
<?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>

  <parent>
  	<groupId>com.ly.firstMaven</groupId>
    <artifactId>user-parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<relativePath>../user-parent/pom.xml</relativePath> <!-- 相对路径 -->
  </parent>
  
  <artifactId>user-core</artifactId>

  <name>user-core</name>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
    </dependency>
	<dependency>
        <groupId>oracle</groupId>
        <artifactId>ojdbc7</artifactId>
    </dependency>
	<dependency>
	    <groupId>log4j</groupId>
	    <artifactId>log4j</artifactId>
	</dependency>
	<dependency>
		<groupId>dbunit</groupId>
		<artifactId>dbunit</artifactId>
	</dependency>
  </dependencies>
</project>

user-log的pom.xml文件:
<?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>
  
  <parent>
  	<groupId>com.ly.firstMaven</groupId>
    <artifactId>user-parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<relativePath>../user-parent/pom.xml</relativePath> <!-- 相对路径 -->
  </parent>
	
  <groupId>com.ly.firstMaven</groupId>
  <artifactId>user-log</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>user-log</name>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
	<dependency>
	    <groupId>commons-logging</groupId>
	    <artifactId>commons-logging</artifactId>
	</dependency>
	<dependency>
	    <groupId>log4j</groupId>
	    <artifactId>log4j</artifactId>
	</dependency>
  </dependencies>
</project>

user-service的pom.xml文件:
<?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>

  <parent>
  	<groupId>com.ly.firstMaven</groupId>
    <artifactId>user-parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<relativePath>../user-parent/pom.xml</relativePath> <!-- 相对路径 -->
  </parent>
  
  <groupId>com.ly.firstMaven</groupId>
  <artifactId>user-service</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>user-service</name>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
	<dependency>
	    <groupId>org.easymock</groupId>
	    <artifactId>easymock</artifactId>
	</dependency>
	<dependency>
	    <groupId>${project.groupId}</groupId>
	    <artifactId>user-log</artifactId>
	</dependency>
  </dependencies>
  
</project>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值