DevOps体系之Maven - Maven POM入门
什么是POM
POM是project object model 项目对象项目模型的简写,它是Maven项目保存的xml格式的文件,是项目所有事情的一站式服务,在Maven的世界里,一个项目不需要任何代码,只需要一个pom.xml文件
快速概述
下面是POM的元素列表,大家可以先熟悉下,注意,modelVersion
的值为4.0.0,这是当前唯一支持的版本
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- The Basics --><groupId>...</groupId><artifactId>...</artifactId><version>...</version><packaging>...</packaging><dependencies>...</dependencies><parent>...</parent><dependencyManagement>...</dependencyManagement><modules>...</modules><properties>...</properties><!-- Build Settings --><build>...</build><reporting>...</reporting><!-- More Project Information --><name>...</name><description>...</description><url>...</url><inceptionYear>...</inceptionYear><licenses>...</licenses><organization>...</organization><developers>...</developers><contributors>...</contributors><!-- Environment Settings --><issueManagement>...</issueManagement><ciManagement>...</ciManagement><mailingLists>...</mailingLists><scm>...</scm><prerequisites>...</prerequisites><repositories>...</repositories><pluginRepositories>...</pluginRepositories><distributionManagement>...</distributionManagement><profiles>...</profiles>
</project>
Maven坐标
何为Maven坐标
Maven坐标类似于平面几何中坐标,它用来唯一 标识构建,这样解决了当需要用到Spring Framework 依赖的时候,大家需要自行去spring官方网站下载,浪费大量时间,因此Maven 就定义了一组规范:世界上任何一个构建都可以使用Maven坐标的唯一标识。
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.codehaus.mojo</groupId><artifactId>my-project</artifactId><version>1.0</version>
</project>
上述定义的POM是Maven允许最低的要求,就是说 groupId、artifactId、version这三个元素是必须有的(不过,如果他们是从父级继承的,则不需要显示的定义groupId、version,这种情况子类也是有这两个的信息的,只是通过父类得到的)
groupId
:定义当前Maven项目隶属的实际项目,这在组织或项目中是唯一的。例如:所有Maven的核心组件都可以在groupId下;groupId不一定采用xxx.xxx.xx这种形式,也可以是一个单词,如单元测试junit的groupId就是一个单词 junit;当存储在仓库时,groupId就会被分割为目录例如
org.codehaus.mojo
,目录结构为org/codehaus/mojo
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.7</version><scope>test</scope> </dependency>
arifactId
:钙元素定义实际项目中的一个Maven项目(模块),推荐使用实际项目名称作为artifactId的前缀,例如servlet的artifactId为servlet-api,这样做的好处是方便寻找<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.4</version> </dependency>
version
:该元素定义Maven项目当前所处的版本,例如上文中servlet-api的版本是2.4,Maven定义了一头完整的版本规范,一级快照(SNAPSHOT)的概念,后续做详细介绍
packaging
:钙元素定义Maven项目的打包方式。打包方式通常和最终所生成构建的文件扩展名对应,默认的打包方式jar,当前核心packaging的值有:pom
,jar
,maven-plugin
,ejb
,war
,ear
,rar
DevOps体系之Maven - Maven POM入门相关推荐
- Maven五分钟入门
Maven 五分钟入门 ---本文翻译自Maven官网的Maven in 5 Minutes,稍有删改,所有版权归maven所有.本文只作学习交流之用. 安装 Maven 是一个java工具,因此,在 ...
- maven的pom报plugins错误的解决方法.
maven的pom报plugins错误的解决方法. 参考文章: (1)maven的pom报plugins错误的解决方法. (2)https://www.cnblogs.com/sjcq/p/61940 ...
- maven的pom.xml用<exclusion>解决版本问题
maven的pom.xml用解决版本问题 参考文章: (1)maven的pom.xml用解决版本问题 (2)https://www.cnblogs.com/liu2-/p/9035922.html 备 ...
- maven的pom.xml中repositories的作用
在maven中pom.xml是Maven进行工作的主要配置文件,它的作用包括:配置Maven项目中需要使用的远程仓库,Maven项目的资源依赖关系等.其中pom是Project Object Mode ...
- JavaFX maven工程pom文件完整内容
JavaFX maven工程pom文件完整内容:打包fxml.css等静态资源文件 <project xmlns="http://maven.apache.org/POM/4.0.0& ...
- Maven 配置文件 POM 的常用插件配置代码
Maven 配置文件 POM 的常用插件配置代码 普通 将 Maven 多模块依赖集成打进一个 JAR 包(方法 1) 将 Maven 多模块依赖集成打进一个 JAR 包(方法 2) 生成单入口类 J ...
- Maven 配置文件 POM 的常用依赖配置代码
Maven 配置文件 POM 的常用依赖配置代码 Lombok 测试 Junit 5 日志 Log4j2 & SLF4J & Lombok Spring Bean Spring Boo ...
- maven打包pom.xml备忘
打包生成可执行jar 包 POM.XML <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...
- Maven的pom.xml文件详解------The Basics
转载自 Maven的pom.xml文件详解------The Basics Maven坐标 GroupId.artifactId和version构成了Maven的坐标(groupId和version ...
- Maven的pom.xml文件详解------Environment Settings
转载自 Maven的pom.xml文件详解------Environment Settings Issue Management 使用的缺陷跟踪系统(Bugzilla,TestTrack,Clear ...
最新文章
- 售价910元!周志华等人英文新书《演化学习》出炉!
- jmeter发送json数据,报405、400错误解决方案
- php中RGB转十六进制、十六进制转RGB
- vee-validate校验demo
- 能源15A1,A2燃烧学期末试题2018-01-02
- 下列关于物理层设备的叙述中,错误的是( )
- 思维导图一定要用计算机来完成吗,计算机绘制思维导图有什么优势
- 普通用户竟这样执行xp_cmdshell存储过程!
- 某大型银行深化系统技术方案之十五:服务层之服务调用
- 关于新功能研发的一些脑洞
- SQL 关于提示SQL Server 2008评估期已过解决办法
- ROS采坑日记(3)----在ROS下 编译ORB_SLAM2时遇到问题:[rosbuild] rospack found package ORB_SLAM2 at ........
- Centos下yum update与yum upgrade的区别
- 2018私塾在线高级java软件架构师实战培训最新
- 九九乘法表的简单代码
- 【Spring笔记09】Spring中事务传播机制(注解方式)
- 增广拉格朗日函数的三种统一公式
- synchronized-锁总结
- 计算机发展史教学反思,计算机教学反思
- Mac 设置 Git 代理
热门文章
- 水声通信基本概念汇总(持续更新)
- pygame飞机大战 小游戏
- element-ui的popover组件没有在正常位置弹出
- 自用chrome+油猴脚本,使用迅雷下载百度云大文件,一键离线下载
- 【JVM进阶之路】十:JVM调优总结
- DX9中如何模拟DX10/11里的ConstantBuffer
- 【NetApp】关闭FRU LED告警指示灯
- 融云 android 推送图标,如何解决 嵌入融云SDK后, Android 手机收不到消息推送?...
- 微信公众号 语音转文字api_终于!微信黑暗模式上线,我的眼睛有救了
- 【matplotlib】如何进行颜色设置选择cmap