Maven 工程分类和工程关系

一  工程分类

1.POM工厂

  用在父级工程或聚合工程中。用来做 jar 包的版本控制。常见 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>
<!-- 组名称 -->
<groupId>groupName</groupId>
<!-- 工程名称 -->
<artifactId>artifactName</artifactId>
<!-- 版本 -->
<version>1.0</version>
<!-- 工程类型 -->
<packaging>pom</packaging>
<!-- 定义一个 properties 配置信息。 定义配置信息,为了统一管理。 -->
<properties>
 <!-- 如果需要使用 properties 配置信息内容。 可以通过表达式${junit.version}访问
4.12 -->
 <junit.version>4.12</junit.version>
</properties>
<!-- 定义当前工程都管理了什么 jar,都是什么版本。并非依赖。 -->
<dependencyManagement>
 <dependencies>
 <!-- 单元测试 -->
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>${junit.version}</version>
 <!-- 有效范围, 作用域
 compile - 编译中有效
 runtime - 运行中有效
 system - 全部中有效[默认]
 provided - 当前工程中有效.
 test - 只在测试有效 。
 -->
 <scope>test</scope>
 </dependency>
 </dependencies>
</dependencyManagement>
<!-- 定义当前工程依赖了什么 jar 包,版本是什么。 -->
<dependencies>
 <!-- 单元测试 -->
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>${junit.version}</version>
 <!-- 有效范围, 作用域。 -->
 <scope>test</scope>
 </dependency>
</dependencies>
</project>

2.  jar工厂  

  将会打包成 jar 用作 jar 包使用。即常见的本地工程 - Java Project。常见 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>
 <groupId>groupName</groupId>
 <artifactId>artifactName</artifactId>
 <version>1.0</version>
 <!-- jar 工程为默认工程类型,可以省略配置 -->
 <!-- <packaging>jar</packaging> -->
</project>

3.war工厂

  将会打包成 war,发布在服务器上的工程。如网站或服务。即常见的网络工程 - Dynamic Web Project。war 工程默认没有 WEB-INF 目录及 web.xml 配置文件,IDE 通常会显示工程错 误,提供完整工程结构可以解决。常见 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>
 <groupId>groupName</groupId>
 <artifactId>artifactName</artifactId>
 <version>1.0</version>
 <packaging>war</packaging>
</project>

二  工厂关系

  1.依赖  即 A 工程开发或运行过程中需要 B 工程提供支持,则代表 A 工程依赖 B 工程。在这种 情况下,需要在 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>
 <!-- 本工程所在组名称 -->
 <groupId>localPrjectGroupName</groupId>
 <!-- 本工程名称 -->
 <artifactId>localPrjectArtifactName</artifactId>
 <!-- 本工程版本 -->
 <version>localPrjectVersionNo</version>
 <!-- 本工程类型 -->
 <packaging>packagingTypeName</packaging>
 <!-- 依赖信息定义 -->
 <dependencies>
 <!-- 定义一个具体的依赖 -->
 <dependency>
 <!-- 依赖的工程所在组名 -->
 <groupId>groupName</groupId>
 <!-- 依赖的工程名 -->
 <artifactId>artifactName</artifactId>
 <!-- 依赖的工程版本 -->
 <version>versionNo</version>
 <!-- 依赖的工程有效范围,其可选值有:
 compile - 编译中有效
 runtime - 运行中有效
 system - 全部中有效[默认]
 provided - 当前工程中有效.
 test - 只在测试有效
 -->
 <scope>system</scope>
 </dependency>
 </dependencies>
</project>

  2.继承  如果 A 工程继承 B 工程,则代表 A 工程默认依赖 B 工程依赖的所有资源,且可以应用 B 工程中定义的所有资源信息。被继承的工程(B 工程)只能是 POM 工程。具体工程 pom.xml 文件配置如下:

  2.1父工程

<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>parentGroup</groupId>
 <artifactId>parentProject</artifactId>
 <version>1.0</version>
 <packaging>pom</packaging>
</project>

  2.2子工程

<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>
 <parent>
 <groupId>parentGroup</groupId>
 <artifactId>parentProject</artifactId>
 <version>1.0</version>
 </parent>
 <!-- 若子工程所在组及版本与父工程一致,可以省略 groupId 和 version 标签配置 -->
 <groupId>childGroup</groupId>
 <artifactId>childProject</artifactId>
 <version>1.0</version>
</project>

  3聚合工程

  当我们开发的工程拥有 2 个以上模块的时候,每个模块都是一个独立的功能集合。比如 某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译, 测试,运行。这个时候我们就需要一个聚合工程。 在创建聚合工程的过程中,总的工程必须是一个 POM 工程(Maven Project),各子模块 可以是任意类型模块(Maven Module)。所有聚合工程和聚合模块必须处于同一个组 (groupId)中,且聚合工程可以嵌套。 具体 pom.xml 文件配置如下:

  3.1总工程配置

<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>superGroup</groupId>
 <artifactId>superProject</artifactId>
 <version>1.0</version>
 <packaging>pom</packaging>
 <!-- 当前聚合工程中的子模块定义,引用的是子模块的 artifactId。 -->
 <modules>
 <module>subProject1</module>
 <module>subProject2</module>
 </modules>
</project>

  3.2子模块1配置

<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>
 <parent>
 <groupId>superGroup</groupId>
 <artifactId>superProject</artifactId>
 <version>1.0</version>
 </parent>
 <artifactId>subProject1</artifactId>
</project>

  子模块2配置

<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>
 <parent>
 <groupId>superGroup</groupId>
 <artifactId>superProject</artifactId>
 <version>1.0</version>
 </parent>
 <artifactId>subProject2</artifactId>
</project>

原文地址:https://www.cnblogs.com/sxrtb/p/12189113.html

时间: 2024-10-17 15:12:37

Maven 工程分类和工程关系的相关文章

maven(二) maven项目构建ssh工程(父工程与子模块的拆分与聚合)

前一节我们明白了maven是个什么玩意,这一节就来讲讲他的一个重要的应用场景,也就是通过maven将一个ssh项目分割为不同的几个部分独立开发,很重要,加油 --WH 一.maven父工程与子模块的拆分与聚合原理 问题描述:将ssh工程拆分为多个模块开发 1.1.拆分原理 创建一个maven project(pom),然后在创建三个子模块(maven moudule),其中三个子模块,分别为 dao.service.web,也就是将三层的内容分别独立为一个项目,进一步将耦合性降低,其中如何将他们

Maven install 的作用 及 Maven是如何维护工程间依赖的

1.当Maven工程的代码发生更改后,是否需要先install该工程再放在jetty插件上运行即jetty:run前是否需要install? 答:不需要 2.那么,install命令应该在何时执行呢? 答:当该工程被其他工程依赖时,修改该项目代码,必须install才能让其他工程依赖最新的该工程.如存在工程common,当common代码发生变化时,必须执行install,其他依赖它的工程,如settle等才能依赖到最新的common,依赖的common才是最新代码. 为什么? 因为执行inst

【建项目】eclipse maven建立多模块工程

在工作的时候,大多时候都是用Maven来管理项目,可是一般我们都知道怎么用maven管理工程,却不知道通过Maven自己来建立多模块工程.于是自己抽时间,在网上找些资料,做了起来. 建立简单的Maven模块结构是这样的: ---- mv-parent |-- pom.xml (pom) | |-- mv-xml |        |-- pom.xml (jar) | |-- mv-lib |        |-- pom.xml (jar) | |-- mv-core |        |--

Maven工程聚合,多个Java工程、web工程聚合

最近写个自己的小项目,牵扯到maven工程聚合问题,网上看了大量资料研究了下,成功了,按照自己的理解简单粗暴的记录下... 一.模块结构 粗略画了个草图表示下现有模块之间的关系 二.模块作用及配置文件 shiro 提供shiro框架所需的jar包及shiro框架可以共用的相关代码 pom略,仅仅为shiro相关jar包配置 ssm 提供ssm框架所需的jar包及与ssm框架相关的可以共用的相关代码 pom略,仅仅为ssm框架相关所需jar包配置 tool 工具模块,提供一些工具代码. pom不配

eclipse 创建maven 项目 动态web工程(出现问题)

Eclipse 创建maven 项目 动态web工程 注:Eclipse版本为(Version: Mars.1 Release (4.5.1))maven版本为(apache-maven-3.3.9) 1. 此处是在你安装好了maven插件的前提下进行的并且配置好了你的maven环境指定好了你的maven的本地仓库.下面就开始maven web项目的搭建 首先:点击新建一个项目maven 2.点击next 3.选择web选项 4.创建你的项目的坐标点击finish完成 5.项目创建完成但是有错误

eclipse+maven+tomcat构建web工程

我们要利用Maven构建一个web应用,开发环境为eclipse+tomcat.构建过程如下: 1.工具准备 eclipse:版本为eclipse 4.2(Juno Service),maven插件的安装与配置参见"m2eclipse安装与配置" tomcat:版本为apache-tomcat-6.0.37(即tomcat6.x系列,本文安装在D:\work\tomcat6\apache-tomcat-6.0.37-maven) 2.建立web应用 我们使用eclipse建立maven

用Maven建立动态web工程

今天我想谈谈Maven.它是一个非常强大的工具.如果你知道怎样去用它,那么你将用最少的精力获得最大的结果.通常情况下Maven帮助你管理工程,包括依赖库.建立进程等等......但是这篇文章我将展示给你怎么样用Maven创建一个动态的web工程(in Eclipse IDE). 前期准备: Eclipse IDE for Java EE Developers M2E plugin for Eclipse Maven 1. File > New (Alt+Shift+N) > Dynamic W

转:Eclipse中创建Maven版的Web工程(详解)

一.搭建步骤 ?首先创建一个Maven的Project,如下图: ?点击Next,勾选 Create a simple project ?点击Next,注意Packing要选择war,因为我们创建的是一个Web工程 ?由于packing是war包,那么下面也就多出了webapp的目录 ?由上图可知,这其实是一个Maven的目录结构,对于Maven来说这是一个Web工程,但对于Eclipse来说这是一个Java工程.Web工程目录至少得有一个WebContent以及WebContent下有web.

使用maven插件对java工程进行打包

现在基本上都是采用maven来进行开发管理,我有一个需求是需要把通过maven管理的java工程打成可执行的jar包,这样也就是说必需把工程依赖的jar包也一起打包.而使用maven默认的package命令构建的jar包中只包括了工程自身的class文件,并没有包括依赖的jar包.我们可以通过配置插件来对工程进行打包,pom具体配置如下: maven-assembly-plugin Xml代码   <plugin> <artifactId>maven-assembly-plugin