为方便管理Maven中的模块,Maven提供了聚合与继承来管理

来源:互联网 发布:全炫茂 知乎 编辑:程序博客网 时间:2024/06/05 08:54

Maven中提供的聚合是,为方便对各个模块进行管理,一次性编译打包

具体操作

在MyEclipse中新建一个Maven项目,在创建的时候我们将红色标记出来的一定选中


点击Next



Maven中的聚合使用


当Maven聚合要之后,我们只要在user-parent执行Maven的命令就会全部执行 如




接下来谈谈Maven中的继承,继承解决了每个模块中的jar包的依赖以及包的冲突,

我们只需要将买个共同使用的jar包全部放在user-parent中的pom.xml 通过 <dependencyManagement></dependencyManagement>来进行依赖管理

具体如下


<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>org.ksea.user</groupId>
  <artifactId>user-parent</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  
  <!--
  用于导入模块 
  这里的路径是相对路径user-core、user-log、user-service、user-parent
  四个包是同级关系,通过modules 我们就完成了Maven中的聚合关系,那么只需要执行
  user-parent 其他都会进行同样操作
  -->
  <modules>
  <module>../user-core</module>
  <module>../user-log</module>
  <module>../user-service</module>
  </modules>
  

 <!--  公用的全部写在这里 -->
   <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  
  <!-- 通过这样的方式来进行依赖的管理  蓝色部分就是通过这样来进行依赖-->
  <dependencyManagement>
  <dependencies>
  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.10</version>
      <scope>test</scope>
    </dependency>
    <dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.10.Final</version>
</dependency>
    <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.37</version>
</dependency>
<dependency>
<groupId>dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.4</version>
</dependency>
<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>user-core</artifactId>
    <version>${project.version}</version>
    </dependency>
     <dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>user-log</artifactId>
    <version>${project.version}</version>
    </dependency>

  </dependencies>
  </dependencyManagement>

  
  <build/>
</project>




-----------在user-core中 的依赖就是如下 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.0</modelVersion>


  <groupId>org.ksea.user</groupId>
  <artifactId>user-core</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

<!-- 
user-core 就通过parent标签来进行继承user-parent的pom.xml
 而user-core中的所有<dependency></dependency>就都不用写version
那么所依赖的jar包的版本都在user-parent进行说明这样就不会发生包冲突
-->
<parent>
<groupId>org.ksea.user</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../user-parent/pom.xml</relativePath>
</parent>

  
  <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>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>dbunit</groupId>
<artifactId>dbunit</artifactId>
</dependency>
    
  </dependencies>
</project>

---------------------------------------user-log继承中的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.0</modelVersion>


  <groupId>org.ksea.user</groupId>
  <artifactId>user-log</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
 
  <!-- 
user-log 就通过parent标签来进行继承user-parent的pom.xml
 而user-log中的所有<dependency></dependency>就都不用写version
那么所依赖的jar包的版本都在user-parent进行说明这样就不会发生包冲突
-->
<parent>
<groupId>org.ksea.user</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../user-parent/pom.xml</relativePath>
</parent>

  <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的配置------------------------------------


<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>org.ksea.user</groupId>
  <artifactId>user-service</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  
  <!-- 
user-service 就通过parent标签来进行继承user-parent的pom.xml
 而user-service中的所有<dependency></dependency>就都不用写version
那么所依赖的jar包的版本都在user-parent进行说明这样就不会发生包冲突
-->
<parent>
<groupId>org.ksea.user</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../user-parent/pom.xml</relativePath>
</parent>

  
  <name>user-service</name>


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


0 0
原创粉丝点击