maven构建多模块项目

点击下载案例代码

在eclipse下构建maven项目,该项目由多个子模块组成。

我这里演示构建一个项目,分别包含三个模块:
前台模块(djweb)
中间模块(djcommon)
后台模块(djadmin)

一,创建一个父项目(dreamjoin)

NEW –>project–>maven–>maven Project,
点击下一步,
进入new maven Project的Select project name and location界面

这里写图片描述

什么也不做,直接 next(下一步 )到Select an Archetype界面。
这里写图片描述

在这个界面中选择maven-Archetype-site-simple,
然后选择 next (下一步),
进入选择Enter a group id for the artifact的界面
这里写图片描述

在group id 和artifact id中输入你的group和artifact名称。
我用的分别是dream和dreamjoin,选择完成。
这时会在eclipse中生成一个项目,项目名是dreamjoin

此时dreamjoin的pom文件如下所示:
这里写图片描述

将项目dreamjoin中的src文件删除(可有可无,主要看个人需要)

二,创建前台子模块(dreamweb)

选中项目dreamjoin,点击右键,
选择NEW -->project-->maven-->maven Module,
点击下一步,在出现的界面中输入子模块的名称dreamweb,
点击下一步,出现Select an Archetype界面。
这时选择maven-Archetype-webapp(构建web层),
然后选择完成,即生成子项目dreamweb

此时dreamweb的pom文件如下所示:
这里写图片描述

三,创建中间子模块(djcommon)

选中项目dreamjoin,点击右键,
选择NEW -->project-->maven-->maven Module,
点击下一步,在出现的界面中输入子模块的名称djcommon,
点击下一步,出现Select an Archetype界面。
这时选择maven-Archetype-site-quickStart(该模块不构建web层),
然后选择完成,即生成子项目djcommon

此时djcommon的pom文件如下所示:
这里写图片描述

四,创建后台子模块(djadmin)

选中项目dreamjoin,点击右键,
选择NEW -->project-->maven-->maven Module,
点击下一步,在出现的界面中输入子模块的名称djadmin,
点击下一步,出现Select an Archetype界面。
这时选择maven-Archetype-webapp(构建web层),
然后选择完成,即生成子项目djadmin

此时djadmin的pom文件如下所示:
这里写图片描述

此时项目就建好了,大家可以根据自己的需要修改pom文件,
我稍微改了下刚建好的pom文件,如下:

dreamjoin的pom文件

<?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>dream</groupId>
  <artifactId>dreamjoin</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <distributionManagement>
    <site>
      <id>website</id>
      <url>scp://webhost.company.com/www/website</url>
    </site>
  </distributionManagement>

  <!-- 子模块开始 -->
  <modules>
    <module>djadmin</module>
    <module>djcommon</module>
    <module>djweb</module>
  </modules>
  <!-- 子模块结束 -->

  <build>
    <!-- 默认编译器是javax.tools.JavaCompiler 设置jdk为1.7版本 -->
    <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.3.1</version>
          <configuration>
            <source>1.7</source>
            <target>1.7</target>
            <encoding>utf8</encoding>
          </configuration>
        </plugin>
    </plugins>
  </build>

  <!-- 属性开始 -->
  <properties>
    <!-- 文件拷贝时的编码 -->  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>  
    <!-- 编译时的编码 -->  
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding> 

    <version.servlet>2.5</version.servlet>
    <version.servlet-jsp>2.1</version.servlet-jsp>
    <version.junit>4.12</version.junit>

  </properties>
  <!-- 属性结束 -->

  <!-- 引入包开始 -->
  <dependencies>

    <!-- provided(只在编译时需要)开始 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>${version.servlet}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>${version.servlet-jsp}</version>
        <scope>provided</scope>
    </dependency>
    <!-- provided(只在编译时需要)结束 -->

    <!-- 测试时需要用到的包 开始 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${version.junit}</version>
      <scope>test</scope>
    </dependency>
    <!-- 测试时需要用到的包 结束 -->

  </dependencies>  
  <!-- 引入包结束 -->

</project>

djweb 的 pom文件

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

   <parent>
    <groupId>dream</groupId>
    <artifactId>dreamjoin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <artifactId>djweb</artifactId>
  <packaging>war</packaging>
  <name>djweb</name>
  <version>${project.all.version}</version>

  <build>
    <finalName>djweb</finalName>
  </build>

  <!-- 属性开始  -->
  <properties>  

  </properties>
  <!-- 属性结束  -->

  <!-- 引入包开始 -->
  <dependencies>
        <!-- 引入djcommon模块 -->
        <dependency>
            <groupId>dream</groupId>
            <artifactId>djcommon</artifactId>
            <version>${project.all.version}</version>
        </dependency>

  </dependencies>
  <!-- 引入包结束 -->

</project>

djcommon的pom文件如下

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <parent>
    <groupId>dream</groupId>
    <artifactId>dreamjoin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <artifactId>djcommon</artifactId>
  <name>djcommon</name>
  <version>${project.all.version}</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>


  <!-- 引入包开始 -->
  <dependencies>

  </dependencies>
  <!-- 引入包结束 -->

</project>

djadmin的pom文件如下

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <parent>
    <groupId>dream</groupId>
    <artifactId>dreamjoin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <artifactId>djadmin</artifactId>
  <packaging>war</packaging>
  <name>djadmin</name>
  <version>${project.all.version}</version>


 <build>
    <finalName>djadmin</finalName>
  </build>

  <!-- 属性开始  -->
  <properties>  


  </properties>
  <!-- 属性结束  -->  

  <!-- 引入包开始 -->
  <dependencies>

        <!-- 引入djcommon模块 -->
        <dependency>
            <groupId>dream</groupId>
            <artifactId>djcommon</artifactId>
            <version>${project.all.version}</version>
        </dependency>


  </dependencies>
  <!-- 引入包结束 -->

</project>

最后说几句

对于这些非常规类型的项目,如果想要成为父项目,需要做如下一些改动:
1.将pom.xml文件中的<packaging>jar</packaging>
改为<packaging>pom</packaging>,
若不换为pom则在打包的时候父项目会产生一个target文件;
如果没有<packaging>pom</packaging>的可以在
<version>0.0.1-SNAPSHOT</version>后面添加上这句话即可。

2.删除除pom.xml外的所有文件,
其中JRE System Library是不能直接删除的,需要选择中,
并单击右键Bulid Path-->Remove from bilud path即可移除。
这时的父项目就显得很干净整洁了。

其实在普通的项目上是不允许构建子模块的,能否在一个项目下创建子模块,
主要取决于是否有<packaging>pom</packaging>这个配置。
如果有这个配置则任何项目都可以创建子模块,
硬要这样创建的话整个项目会变的不伦不类。
看来maven在判断一个项目是否可以创建子模块其实是取决于这个配置的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值