简介maven核心:pom项目对象模型

Maven

Maven 意思是知识的积累者,最初是为了简化 Jakarta Turbine 项目中的构建过程。有几个项目,每个项目都有自己的 Ant 构建文件,它们都略有不同。JAR 被检入 CVS。我们想要一种标准的方式来构建项目,清楚地定义项目的组成,发布项目信息的简单方法,以及在多个项目之间共享 JAR 的方法。

结果是现在可以用于构建和管理任何基于 Java 的项目的工具。我们希望我们已经创建了一些东西,可以让 Java 开发人员的日常工作更轻松,并且通常有助于理解任何基于 Java 的项目。

Maven 的主要目标是让开发人员能够在最短的时间内了解开发工作的完整状态。为了实现这一目标,Maven 处理了几个关注领域:

  • 简化构建过程

  • 提供统一的构建系统

  • 提供优质的项目信息

  • 鼓励更好的发展实践

pom

pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。

POM包括了所有的项目信息:

groupId:项目或者组织的唯一标志,并且配置时生成路径也是由此生成,如org.myproject.mojo生成的相对路径为:/org/myproject/mojo

artifactId:项目的通用名称

version:项目的版本

packaging:打包机制,如pom,jar,maven-plugin,ejb,war,ear,rar,par

name:用户描述项目的名称,无关紧要的东西,可选

url:应该是只是写明开发团队的网站,无关紧要,可选

classifer:分类

其中groupId,artifactId,version,packaging这四项组成了项目的唯一坐标。一般情况下,前面三项就可以组成项目的唯一坐标了。

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>
<!-- 子模块对父模块的继承,继承父模块的所有依赖 -->
<parent>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</parent>
<!-- 指定多个模块一起进行编译 -->
<modules>
<module></module>
</modules>
<!--groupId 反写的公司网站+项目名称 -->
<groupId>com.demo.ssm</groupId>
<!--artifactId 项目名称+模块名称 -->
<artifactId>demo-ssm</artifactId>
<!--第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号 0.0.1
snapshot快照 alpha内部测试 beta公测
Release稳定版本 GA正式发布
-->
<version>0.0.1-SNAPSHOT</version>
<!-- 默认是jar 可以是war jar pom -->
<packaging>jar</packaging>
<!--项目描述名称-->
<name>demo-ssm</name>
<!--项目地址-->
<url>www.gseem.com</url>
<!--项目描述-->
<description>这是项目描述</description>
<!--开发者列表-->
<developers>feiyue</developers>
<!--项目许可证-->
<licenses></licenses>
<!--项目组织信息-->
<organization></organization>
<!--项目属性-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<!--项目依赖列表-->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<type></type>
<!-- 作用范围 -->
<scope>test</scope>
<!-- 设置依赖是否可选-->
<optional></optional>
<!-- 排除依赖传递列表 -->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.demo.maven</groupId>
<artifactId>demo.maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<!-- 依赖的管理 -->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>
</project>
XML 复制代码
<project>
  <modelVersion>4.0.0</modelVersion>
<!--maven2.0必须是这样写,现在是maven2唯一支持的版本-->
  <!-- 基础设置 -->
  <groupId>...</groupId>
  <artifactId>...</artifactId>
  <version>...</version>
  <packaging>...</packaging>

  <name>...</name>

  <url>...</url>
  <dependencies>...</dependencies>
  <parent>...</parent>
  <dependencyManagement>...</dependencyManagement>
  <modules>...</modules>
  <properties>...</properties>

  <!--构建设置 -->
  <build>...</build>
  <reporting>...</reporting>

  <!-- 更多项目信息 -->
  <name>...</name>
  <description>...</description>
  <url>...</url>
  <inceptionYear>...</inceptionYear>
  <licenses>...</licenses>
  <organization>...</organization>
  <developers>...</developers>
  <contributors>...</contributors>

  <!-- 环境设置-->
  <issueManagement>...</issueManagement>
  <ciManagement>...</ciManagement>
  <mailingLists>...</mailingLists> 
  <scm>...</scm>
  <prerequisites>...</prerequisites>
  <repositories>...</repositories>
  <pluginRepositories>...</pluginRepositories>
  <distributionManagement>...</distributionManagement>
  <profiles>...</profiles>
</project>

通过qcadoo MES项目学习

qcadoo MES - Friendly Manufacturing Execution System

参见:

Maven -- 简介

maven核心:pom.xml文件详解-阿里云开发者社区

https://github.com/qcadoo/mes/releases/tag/2.4.1

https://mvnrepository.com/

Maven项目的构建与管理-研发管理

Maven -- POM Reference

Maven POM | POM Maven - By Microsoft Award MVP - maven tutorial - Learn in 30sec | wikitechy

相关推荐
李小白662 分钟前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp15 分钟前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
n北斗1 小时前
常用类晨考day15
java
骇客野人1 小时前
【JAVA】JAVA接口公共返回体ResponseData封装
java·开发语言
yuanbenshidiaos2 小时前
c++---------数据类型
java·jvm·c++
向宇it2 小时前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎
Lojarro2 小时前
【Spring】Spring框架之-AOP
java·mysql·spring
莫名其妙小饼干2 小时前
网上球鞋竞拍系统|Java|SSM|VUE| 前后端分离
java·开发语言·maven·mssql
isolusion3 小时前
Springboot的创建方式
java·spring boot·后端