在eclipse下构建maven项目,该项目由多个子模块组成。
1.创建一个父项目
NEW -->project-->maven-->maven Project,点击下一步,进入new maven Project的Select project name and location界面
,什么也不做,直接下一步到Select an Archetype界面。
在这个界面中选择maven-Archetype-site-simple,然后选择下一步,进入选择Enter a group id for the artifact的界面
,在group id 和artifact id中输入你的group和artifact名称。我用的分别是A和B,选择完成。这时会在eclipse中生成一个项目,项目名是B。
此时B的pom文件如下所示:
- <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>A</groupId>
- <artifactId>B</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>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- </project>
<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>A</groupId> <artifactId>B</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> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
2.创建子项目
2.1 将项目B中的src文件删除(可有可无,主要看个人需要)
2.2 选中项目B,点击右键,选择NEW -->project-->maven-->maven Module,点击下一步,在出现的界面中输入子模块的名称C,点击下一步,出现Select an Archetype界面。这时选择maven-Archetype-site-quickStart或者maven-Archetype-webapp(构建web层时使用),然后选择完成,即生成子项目C。
这时B的pom文件就变成了这样(和上面的比只是多了个modules标签):
- <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>A</groupId>
- <artifactId>B</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>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <modules>
- <module>C</module>
- </modules>
- </project>
<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>A</groupId> <artifactId>B</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> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <modules> <module>C</module> </modules> </project>
这时构建B的子项目完成,构建其他的子项目和此类似。
在构建第二个子项目D时可能在B中没有及时出现,这时只要把B项目刷新下就可以了。
ps:
其实在构建多模块的项目时,在选择父项目的类型时是可以选择任意的类型。选择项目类型的界面如下:
对于这些非常规类型的项目,如果想要成为父项目,需要做如下一些改动:
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在判断一个项目是否可以创建子模块其实是取决于这个配置的。
其它的方法
现就建立maven子项目步骤进行详细讲解:
1、右键 父项目,选择maven--->New Maven Module Project,勾选Create a simple project,同时输入子模块的名字,点击 next,选择Packaging 为war,
由于packaging 是war,所以在src/main/下多了一个webapp,至此,maven子模块建立完毕。
注释:a simple project 指的是,是否使用骨架,非标准的骨架允许用户建立自己的结构,而标准的骨架只能允许用户按照标准版的格式来使用。
2、由于上述步骤建立的是maven子模块,同时要将该模块发布到tomcat下,所以要将该maven子模块转换为dynamic web project 项目。
3、右键该项目,选择Project Facets,点击Convert to faceted from,然后勾选Dynamic Wed Module,并点击ok(3.0只有tomcat7才支持),再点击下方的Further Configuration available,勾选Generate web.xml deployment descriptor,现在看看我们的项目结构,发现多了一个webContent,虽然此时可以发布到tomcat下,但是看着很别扭,也不符合maven结构,接下来,我们还要作如下修改。
4、把webContent下的META-INF、WEB-INF剪切到src/main/webap 目录下,并删除webContent目录。
5、修改发布规则,右键点击项目,选择Deployment Assembly,选择webContent,并remove掉,测试test目录也不需要,也一并remove,接着重新指定 web的路径,点击add,选择Folder,找到src下的webapp目录,并finish。
6、最后一步,需要将maven的引用包添加进来,直接点击add,选择Java build path Entries,然后next,然后finish。
至此,子模块新建完毕。
相关推荐
使用Maven构建多模块项目
maven-3.5.0多工程构建(spring4mvc分子项目) 使用maven构建多模块项目。在一个项目中使用多个模块的一个方法是将模块... maven maven3.5.0 多工程构建 spring4mvc 子项目 maven构建项目 多模块项目 maven构建WEB项目
maven构建多模块项目,参考:http://blog.csdn.net/xiejx618/article/details/19849035
使用maven构建多模块项目。在一个项目中使用多个模块的一个方法是将模块添加为依赖项,正常情况下,我们会添加一个外部模块作为依赖。但是,当模块是一个项目的一部分,并密切相关的时候,该项目应被构造为一个多...
基于maven构建的多模块ssm demo,里面含有阿里的一个setting文件;也欢迎大家关注我的个人博客:https://juejin.im/user/58fcc0768d6d810058965a06;一起学习
在eclipse下构建maven项目,该项目由多个子模块组成。main-app是主项目, 其他项目构建在此项目下面
Springboot整合dubbo构建maven多模块项目 - 集成 mybatis
NULL 博文链接:https://yansxjl.iteye.com/blog/2333900
NULL 博文链接:https://liuyunlong1229.iteye.com/blog/2262851
Maven多模块项目编译速度慢,下面我们来学习下优化的方法。 mvn clean package -T 4C -Dmaven.test.skip=true -Dmaven.compile.fork=true -T 4C 代表本机4个CPU内核都参与编译工程, -Dmaven.test.skip=true 代表...
Springboot整合dubbo构建maven多模块项目 简单实例,包括Server和client两个子模块
1.创建Maven项目构建多模块的Maven项目第一步需创建Maven父级项目,该项目负责聚合所有模块的内容,并进行编译、打包和发布工作。以下是创建Maven项目的具体步骤: 1.1. Maven环境配置配置M2_HOME和MAVEN_HOME,如下...
IntelliJ IDEA 构建maven多模块工程项目
IDEA下使用maven构建web项目(SpringMVC+Mybatis整合).非常详细,欢迎使用。
Maven 是一种流行且功能强大的项目管理工具,主要用于构建、发布和管理 Java 项目。本文将介绍 Maven 的基本概念、核心功能和优势,以及它在项目开发中的重要作用。 第一部分:Maven 的基本概念 解释 Maven 的基本...
NULL 博文链接:https://qindongliang.iteye.com/blog/2240099
GradleAndMaven:通过Gradle和Maven构建的多模块项目
这个简单的项目展示了如何使用Maven构建Java 9模块。 它使用ServiceLoader从其他模块加载松耦合的服务。 它还演示了如何通过不对测试源进行模块化就可以从未命名模块中对非导出包中的方法进行单元测试。 在我们的...
maven构建多模块项目,里面也包含spring data jpa的一个例子