Maven多模块工程搭建

来源:互联网 发布:域名注册怎样收费 编辑:程序博客网 时间:2024/06/05 17:45

一、工程结构:


其中ds 系统中包含两个模块,分别为ds-service和ds-admin


二、搭建如上工程结构步骤如下:

1、创建父项目ds,在Eclipse里面New -> Maven Project;记得勾选Create a simple project”


创建工程时注意一下红圈:



2、父项目建好之后,目录下面将其他无关的文件删除,只要留下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><!--
声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。-->
  <groupId>com.suning.search</groupId>
  <artifactId>ps</artifactId>
  <packaging>pom</packaging>  <!--
所有带有子模块的项目的packaging都为pom-->
  <name>ds-parent</name>  
  <version>0.0.1-SNAPSHOT</version>
  <modules>
<!--包含的这两个子模块是后面建立模块的时候自动生成的-->
 
<module>ds-admin</module>
 
<module>ds-service</module>
  </modules>
  <dependencyManagement>
<!--admin和service公用的依赖放在这里-->
    <dependencies>
        <dependency> 
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>3.8.1</version>
           <scope>test</scope>
        </dependency>
    </dependencies>  
  </dependencyManagement>
</project>


3、创建子模块:

选中刚建的父项目,在弹出菜单中点击 New -> Maven Module;在红圈中输入子模块名称。添加完成后会在父项目的pom中自动添加模块名。



(注意:子模块创建过程如果是一般的模块,保持默认GroupId:org.apache.maven.archetypes,Artifact Id:maven-archetype-quickstart,如果是web模块则选中下图中的红圈所示选项


按上面步骤创建的子项目,在pom.xml中有个parent节点,所以,他可以继承父项目的相关信息。没错,父子项目中存在继承关系。

在子项目的pom.xml中,子项目的groupIdversion一般和父项目相同,那么可以把子项目的这两个参数删除,这样会自动继承父项目的取值。

同样,如果其他的一些属性,所有子项目都是一样的,那么可以上移到父项目中设置,子项目中无需重复设置。比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>可以仅在父项目中设置一次。

Manen提供dependencyManagementpluginManagement两个标签。使用这两个标签,可以在父项目中统一管理依赖和插件的配置参数,比如版本号啥的。而在子项目中,仅需列出需要使用的依赖和插件的groupIdartifactId就可以了,其他信息会自动从父项目管理的信息里面获取。


例如:

在父项目中:

<dependencyManagement><!--admin和service公用的依赖放在这里-->
    <dependencies>
        <dependency> 
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>3.8.1</version>
           <scope>test</scope>
        </dependency>
    </dependencies>  
  </dependencyManagement>


子项目中:

<dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
</dependency>


下接SpringMVC+jetty框架搭建