在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>
</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>
</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在判断一个项目是否可以创建子模块其实是取决于这个配置的。