1 用maven进行多项目的管理
多项目管理是maven的主要特色之一,对于一个大型工程,用maven来管理他们之间复杂的依赖关系,是再好不过了。maven的项目配置之间的关系有两种:继承关系和引用关系。
maven默认根据目录结构来设定pom的继承关系,即下级目录的pom默认继承上级目录的pom。要设定两者之间的关系很简单,上级pom如下设置:
<modules>
<module>ABCCommon</module>
<module>ABCCore</module>
<module>ABCTools</module>
</modules>
要记住的是,这里的module是目录名,不是子工程的artifactId。子工程如下设置:
<parent>
<groupId>com.abc.product1</groupId>
<artifactId>abc-product1</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>abc-my-module2</artifactId>
<packaging>jar</packaging>
这样两者就相互关联起来了,继承关系就设定完毕,所有父工程的配置内容都会自动在子工程中生效,除非子工程有相同的配置覆盖。如果你不喜欢层层递进的目录结构来实现继承,也可以在parent中加入<relativePath>../a-parent/pom.xml</relativePath> 来制定parent项目的相对目录。继承关系通常用在项目共同特性的抽取上,通过抽取公共特性,可以大幅度减少子项目的配置工作量。
在项目中我们使用一个主项目进行管理,在其中配置pom.xml用于引入相关的jar包等的,可以说是一些公共的,可以用于多个项目的关联,网上看到说是一种引用的方式。下面说下:
mvnproj:主项目中的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>
<groupId>com.efn</groupId>
<artifactId>mvnproj2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging> <!-- pom方式-->
<name>mvnproj2</name>
<url>http://maven.apache.org</url>
<!-- =============================dependencies================================== -->
<dependencies>
<!-- junit的包导入 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- jdbc的依赖关�?-->
<dependency>
<groupId>jdbc</groupId>
<artifactId>jdbc</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j-version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<log4j-version>1.2.13</log4j-version>
</properties>
<!--项目应的子项目-->
<modules><module>mvnproj2_kernel</module>
<module>mvnproj2_web</module>
</modules>
</project>
mvnproj2_kernel:pom.xml:
..........................
<parent>
<artifactId>mvnproj2</artifactId>
<groupId>com.efn</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
..............................
mvnproj2_web:
<parent>
<artifactId>mvnproj2</artifactId>
<groupId>com.efn</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<!-- 依赖kernel工程 -->
<dependency>
<groupId>com.efn</groupId>
<artifactId>mvnproj2_kernel</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
如上的就已经配置好了相应的应用,继承关系。当然我们在eclipse中打开pom.xml文件选择Overview视图可以直接在上面进行操作,例如在Mudules中选择增加的图标进行子项目的添加建立操作,在该过程中我们可以选择进行普通java的mvn项目的建立或者是web java的建立等,都可以进行选择。
选择好后就会生成相应的项目,当然相应的pom.xml文件都会生成好,主项目中的引用都会在子项目中体现。