简介
因为在工作中经常要使用到maven做工程开发。很多时候我们开发的项目不仅仅是一个单独的工程,出于更多的可重用和部署的目的,我们在大多数的情况下会使用多个工程进行开发。因此怎么使用maven来创建多工程的项目就有必要总结一下。在前面的一些文章里已经讨论过了maven相关的基础设置。
详细步骤
创建父工程
通常的情况下,我们是希望创建一个父工程,它将作为一个所有工程的公共目录。里面包含有整个大的项目的描述。
比如说,我们执行如下命令:
mvn archetype:generate -DgroupId=com.yunzero -DartifactId=cloud-parent -DinteractiveMode=false
系统会输出一大堆如下的内容:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) > generate-sources @ standalone-pom >>> [INFO] [INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) < generate-sources @ standalone-pom <<< [INFO] [INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom --- [INFO] Generating project in Batch mode [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: basedir, Value: /home/frank/programcode/maven [INFO] Parameter: package, Value: com.yunzero [INFO] Parameter: groupId, Value: com.yunzero [INFO] Parameter: artifactId, Value: cloud-parent [INFO] Parameter: packageName, Value: com.yunzero [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: /home/frank/programcode/maven/cloud-parent [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 16.855 s [INFO] Finished at: 2015-05-04T21:12:33+08:00 [INFO] Final Memory: 15M/303M [INFO] ------------------------------------------------------------------------
这个时候,如果我们去看当前的目录,会生成一个名字为cloud-parent的目录。上述的命令就是生成一个名字为cloud-parent的工程,而且里面的工程默认包空间名为com.yunzero。这个生成的目录结构如下图:
除了生成的目录结构之外,我们再来看看生成的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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.yunzero</groupId> <artifactId>cloud-parent</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>cloud-parent</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
这是一个典型的maven工程pom描述文件。而且它默认的打包方式是生成jar文件。在这里,因为我们需要将该工程作为项目的父目录,所以需要将<packaging>元素里面的jar改为pom。同时,该文件家生成的其他文件并不是必要的,我们可以将它们都删除。这样,我们就得到一个仅仅包含有pom.xml文件的目录。
生成子工程
假设我们还需要生成两个子工程,分别为cloud-common, cloud-service。我们可以在该工程目录中执行命令:
mvn archetype:generate -DgroupId=com.yunzero -DartifactId=cloud-common -DinteractiveMode=false
这个时候,我们会发现在当前的目录里多了一个cloud-common的目录。这样整体的项目结构如下图:
如果我们再去看当前目录下的pom.xml文件,会发现里面多了这么一个部分:
<modules> <module>cloud-common</module> </modules>
这部分就正好定义了父工程和所包含的子工程之间的关系。
按照同样的方法,我们再定义另外一个工程cloud-service。
mvn archetype:generate -DgroupId=com.yunzero -DartifactId=cloud-service -DinteractiveMode=false
这样,整个的工程就生成了。我们可以运行命令mvn clean install来编译和打包工程。
导入eclipse
执行命令:
mvn eclipse:eclipse
在结束后运行eclipse,选择导入工程:
然后选择我们刚才创建的工程所在目录:
选择确定之后我们将看到有如下的两个工程被选择上了:
这样,一个多工程的项目就被创建了。
相关推荐
基于maven创建web项目 ...本文介绍了基于maven创建web项目的步骤,包括搭建maven环境、集成maven到Myeclipse2013和创建maven架构下的WEB工程。通过这篇文章,读者可以学习到如何使用maven来构建和管理web项目。
本教程将指导您使用 IDEA 创建一个 Maven Web 项目,从安装 Maven 到配置 Maven 环境、创建 Maven 工程、pom.xml 文件配置、依赖管理等。 1. 安装 Maven 在 IDEA 中使用 Maven 之前,需要先安装 Maven。在 Maven ...
在不使用Maven的情况下,在Eclipse中创建Spring Boot工程,你需要手动管理依赖的jar包。以下是一些关于这些jar包及其在Spring Boot项目中的作用的关键知识点: 1. **jboss-logging-3.3.0.Final.jar**:这是一个日志...
通过以上步骤,我们成功地使用 Maven 和 Eclipse 创建了一个 Web 项目,并按照 Maven 的规范进行了结构调整。这种做法不仅有助于保持项目结构的清晰和一致,还能充分利用 Maven 的强大功能,提高开发效率。在未来...
本文将基于提供的文件信息,深入探讨如何使用Maven创建和管理包含多个子模块的Java工程项目。 #### Maven创建Java工程概述 在给定的描述中,提及了一个名为`mydemo`的web项目,该项目被细分为两个模块:`mydemo-...
本篇文章将详细讲解如何使用Maven创建父子结构工程,以便于更好地组织和管理大型项目。 首先,理解Maven的父子结构(多模块项目)是至关重要的。在大型项目中,通常会将项目划分为多个子模块,每个子模块负责不同的...
6. **多模块项目**:Maven支持大型项目拆分为多个子模块进行管理,方便维护和构建。 **三、单元测试** 单元测试是针对软件中的最小可测试单元(如函数、方法)进行验证,确保其按预期工作。在Java中,常用的单元...
本资源提供了一个手动创建的Maven工程示例,有助于初学者理解和掌握如何从零开始构建Maven项目。 首先,我们要理解Maven的核心概念——Project Object Model (POM)。POM是Maven项目的基本配置单元,包含了项目信息...
这个【hibernate+maven demo项目工程】是一个很好的学习资源,它涵盖了Maven的基本使用、Hibernate的配置与操作,以及如何组织Java项目结构。通过深入研究此项目,开发者可以更好地掌握这两项技术,并将其应用于实际...
【使用Maven搭建S2SH工程详解一:创建Struts2工程】 在Java Web开发中,S2SH架构(Struts2 + Spring + Hibernate)是一种常见的应用框架组合,用于构建高效、灵活的企业级应用程序。本篇文章主要讲解如何利用Maven...
使用ECLIPSE创建MAVEN工程图解 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE), Maven 是一个基于项目对象模型(POM)的项目管理工具。本文将指导您如何使用Eclipse 创建 Maven 工程,并了解 Maven 的...
在"Maven构建项目工程"中,我们可以深入了解Maven如何帮助我们快速、简便地创建和管理项目。 首先,创建一个新的Maven项目可以使用`mvn archetype:create`命令。在这个例子中,我们使用了`-DgroupId=org.lzk.ssh`和...
总之,"maven多模块项目工程-已搭建好"是一个已经配置好的、使用Eclipse开发的项目结构,通过"xd-parent"模块实现了依赖和插件的集中管理,方便开发者进行模块化开发,提高了项目的可维护性和开发效率。在实际使用中...
本篇文章将详细探讨"Maven多模块项目构建过程",并结合提供的资源"搭建maven多工程模块步骤",来深入理解如何创建和管理一个包含多个子项目的Maven工程。 1. Maven多模块项目概述: Maven多模块项目是指由一个父...
### Eclipse 创建 Maven 项目 动态 Web 工程完整示例 #### 一、创建 Maven 项目 在 Eclipse 中创建 Maven 项目时,首先要确保已安装 Maven 插件。如果 Eclipse 的新项目列表中未找到 Maven 选项,可以通过 **Other...
以上就是使用Maven创建一个基于SSM的Web项目的基本流程。这个框架组合在BI产品开发中非常常见,因为它提供了强大的功能,包括依赖管理、数据库操作、事务控制、模型-视图-控制器分离等,有助于提升开发效率和项目...
首先,我们从【标题】"SpringBoot使用Maven建立多模块工程"出发,了解其核心概念。Maven是一个项目管理和综合工具,它管理项目的构建、报告和文档,通过POM(Project Object Model)文件定义项目的依赖和构建过程。...
构建 Maven 多模块工程项目是使用 IntelliJ IDEA 实现大型项目开发的重要步骤。下面是对 IntelliJ IDEA 构建 Maven 多模块工程项目的详细介绍。 继承 在 Maven 中,继承是指子模块可以继承父模块的依赖项和配置。...
本文将详细讲解如何在IntelliJ IDEA(Idea)中创建和管理多Maven模块工程,以便更好地组织和协同开发复杂的软件系统。 一、Maven简介 Maven是一个基于项目对象模型(Project Object Model,POM)的概念,它能够自动...
1. **Maven Archetype插件**:Maven Archetype插件是实现逆向工程的核心工具,它可以创建基于模板的新项目。在逆向工程中,Archetype插件会分析已存在的类和资源,生成相应的pom.xml文件以及项目目录结构。 2. **...