Maven POM详解<一>坐标体系

 

创建Maven项目,IDEA自动生成的POM文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<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>com.lf662000</groupId>
    <artifactId>pomExample</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>
 

其中的groupId,artifactId,version是Maven 2.0 和3.0所允许的最小值,在Maven体系中,通过这三个元素唯一的确定一个项目。有一个专有名词Maven坐标(Maven Coordinates )。坐标可以通过经纬度在整个世界地图上用东西经、南北纬的不同数值来唯一标识出一个地点,那么Maven坐标又是如何在Maven的依赖世界中唯一标识一个项目呢?秘密就在这个允许的最小值中,通过三个标识配合,能够唯一定位一个项目。

groupId:唯一定义一个组织或者项目。上文中的

<groupId>com.lf662000</groupId>

在Maven世界中,会到Maven的根目录下的com目录下的lf662000目录中去查找这个项目,其中 . 会被默认解析为文件系统的分隔符,当然了,“.”不是必须的,可以直接使用一个名词来区分,但推荐的方式是类似Java中包命名方式一样的,使用一个唯一表示的网址来标识项目。按照字面意思,其实就是定义了一个组织。

artifactId:唯一标识一个项目或者模块。上文中的

 <artifactId>pomExample</artifactId>

在Maven世界中,会借着groupId的信息,继续查找artifactId下的内容,即查找com/lf662000/pomExample下的项目。一个组织下面会有多个项目或者工程,groupId唯一定义了一个组织,artifactId就来明确了这个组织下的具体项目是什么内容。如果Maven项目最终是Jar包形式来打包,Jar包的名称以artifactId来命名,基于这个规则,我们就需要考虑在artifactId中设置一个什么样的名字才能不产生二义性。如果仅仅用一个名词区分,例如都叫pomExample,那么在多个项目一起工作的时候,比如在StateGrid下有个pomExample,在CSG在也有个pomExample,那么打出来的包就好玩,他们是一样的。所以这里建议增加上组织最后一个标识,来区分不同的项目。上文的artifactId建议的方式:

<artifactId>lf662000-pomExample</artifactId>

version:版本号,最后一个定位的内容。在Maven世界中,经历了groupId目录、artifactId目录,会最后再查找Version目录,那么就会唯一定位一个项目了。上文中的

<version>1.0-SNAPSHOT</version>

会继续接力。

在最终的Maven世界中,会在如下的文件目录中查找最终的项目包。

MavenREPO
    ——groupId
            ——artifactId
                ——version
                    ——具体的jar包

 

转载于:https://www.cnblogs.com/lf662000/p/6758770.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值