简介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

相关推荐
代码之光_198024 分钟前
保障性住房管理:SpringBoot技术优势分析
java·spring boot·后端
ajsbxi30 分钟前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
StayInLove1 小时前
G1垃圾回收器日志详解
java·开发语言
对许1 小时前
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“
java·log4j
无尽的大道1 小时前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
小鑫记得努力1 小时前
Java类和对象(下篇)
java
binishuaio1 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
zz.YE1 小时前
【Java SE】StringBuffer
java·开发语言
老友@1 小时前
aspose如何获取PPT放映页“切换”的“持续时间”值
java·powerpoint·aspose
wrx繁星点点1 小时前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式