精华内容
下载资源
问答
  • 譬如在googlecode上建立一个名为myapp项目,那么groupId就应该是com.googlecode.myapp artifactId定义了当前Maven项目在组中唯一ID,例如你可能为不同子项目(模块)分配artifactId, 如myapp-util, myapp-...

    groupId定义项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。譬如在googlecode上建立一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp

    artifactId定义了当前Maven项目在组中唯一的ID,例如你可能为不同的子项目(模块)分配artifactId, 如myapp-util, myapp-domain, myapp-web等

    version指定了项目当前的版本,例如: 1.0-SNAPSHOT, SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.0, 1.1-SNAPSHOT, 1.1, 2.0

    packaging定义Maven项目的打包方式。打包方式通常与所生成构件的文件扩展名对应,如packaging为jar,最终的文件名为XXX.jar,而使用war打包方式的Maven项目,最终生成的构件会有一个.war文件,不过这不是绝对的。其次,打包方式会影响到构建的生命周期,如jar打包和war打包会使用不同的命令。最后,当不定义packaging的时候,Maven会使用默认值jar。

    classifier用来帮助定义构建输出的一些附属构件。附属构件与主构件对应,如nexus-indexer-2.0.0.jar,该项目可能还会通过使用一些插件生成如nexus-indexer-2.0.0-javadoc.jar,nexus-indexer-2.0.0-sources.jar这样一些附属构件。这时候,javadoc和sources就是这两个附属构件的classifier。这样,附属构件也就有用了自己唯一的坐标。还有一个关于classifier的典型例子是TestNG,TestNG的主构件是基于Java 1.4平台的,而它又提供了一个classifier为jdk5的附属构件。注意,不能直接定义项目的classifier,因为附属构件不是项目直接默认生成的,而是由附加的插件帮助生成。

    上述5个元素中,groupId, artifactId, version是必须定义的,packaging是可选的,而classifier是不能直接定义的。
    同时,项目构件的文件名是与坐标相对应的,一般的规则为artifactId-version[-classifier].packaging。packaging并非一定与构件扩展名对应,比如packaging为maven-plugin的构件扩展名为jar。

    name元素声明了一个对于用户更为友好的项目名称

    转载于:https://www.cnblogs.com/leo100w/p/4017669.html

    展开全文
  • 世界上任何一个构件都可以使用Maven坐标唯一标志,maven坐标的元素包括groupId, artifactId, version,package,classifier。 只要在pom.xml文件中配置好dependancy的groupId,artifact,verison,classifier,maven...

    Maven中的GroupID和ArtifactID指的是什么?

    maven的世界中拥有数量非常巨大的构件,也就是平时用的一些jar,war等文件。

    maven定义了这样一组规则:

    世界上任何一个构件都可以使用Maven坐标唯一标志,maven坐标的元素包括groupId, artifactId, version,package,classifier。
    只要在pom.xml文件中配置好dependancy的groupId,artifact,verison,classifier,maven就会从仓库中寻找相应的构件供我们使用。

    GroupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司tomcat项目例子:这个项目的GroupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,ArtifactId是tomcat。

    展开全文
  • 1、maven 坐标groupId、artifactId、packaging、version、classifier定义。2、classifier 用来帮助定义构建输出一些附属构件。如,*javadoc.jar,*sources.jar。不能直接定义项目classifier。3、maven ...

    1、maven 坐标由groupId、artifactId、packaging、version、classifier定义。

    2、classifier 用来帮助定义构建输出的一些附属构件。如,*javadoc.jar,*sources.jar。不能直接定义项目的classifier。

    3、maven packaging 包括 jar、war、pom、maven-plugin、ear等。

    4、依赖标签及其子标签

    依赖范围

    compile 默认。表示该依赖对主代码和测试都有效。

    test 表示该依赖只对测试有效。即测试代码中 import JUnit 没有问题,但在主代码中 import JUnit就会造成编译错误。该依赖只会被加入到测试代码的classpath中。

    provided 已提供依赖。编译、测试有效,运行时无效。如servlet-api,编译和测试时需要;但在运行时,由于容器已提供,不再需要。

    runtime 运行时有效。测试和运行时有效,但在编译时不需要。如JDBC驱动实现,编译时只需要JDK提供的JDBC的接口;只有在执行测试和运行项目的时候才需要具体的JDBC驱动。

    system 谨慎使用。

    d00a2dc19ae78395927a1a3cf482660c.png

    排除依赖

    情景1:当前项目依赖了一个第三方依赖,但这个第三方依赖又依赖了另外一个SNAPSHOT版本的依赖,那么这个不稳定版本的依赖会影响到当前版本的稳定性。

    情景2:Hibernate依赖 Sun JTA API,但由于版权的原因,该类库不存在于中央仓库,而Apache Geronimo 有一个对应的实现。这时就可以排除 Sun JTA API,再显示声明依赖 Apache Geronimo的 JPA API 实现。

    xxx

    xxx

    5.1.30

    xxx-zzz

    zzz

    xxx-zzz

    zzz

    1.1.1

    exclusion 可以有多个;声明exclusions时不需要版本号。

    可选依赖

    A—>B、B->X(可选)、B->Y(可选),那么X和Y都不会传递给A。

    项目B实现了两个特性,特性一依赖X,特性二依赖Y,而这两个特性是互斥的。

    比如一个持久层构件支持多种数据库,它需要多个数据库的驱动程序,但在使用它的时候,只会依赖一个数据库。

    mysql

    mysql-connector-java

    5.1.30

    true

    myOracle

    ojdbc6

    11.2.0

    true

    上面这两个依赖只对当前项目有效,当其它构件依赖当前构件时它们不会被传递。

    其它构件依赖当前构件后,前者需要在其pom文件里显示声明其中一个。

    理想情况下,不要使用可选依赖,写两个构件,分别实现两个特性。

    依赖的传递性

    比如当前项目依赖org.springframework:spring-core:2.5.6,而spring-core又依赖commons-logging,这时commons-logging就成为当前项目的依赖。

    spring-core对commons-logging的依赖,可以在本地仓库里查看spring-core-x.x.x.pom看到。

    依赖范围对传递性依赖的影响

    当第二依赖的范围是compile时,依赖传递,传递依赖的范围和第一依赖的范围一致;当第二依赖范围是test的时候,依赖不会传递;当第二依赖范围是provided,只有第一依赖范围也是provided时,依赖传递,并且传递依赖的范围也是provided;当第二依赖范围是runtime,依赖传递,第一依赖是compile时,传递依赖是runtime,其它的都和第一依赖相同。

    afe8f60365d95450978ca3c543fc8d48.png

    依赖调解

    第一原则,就近原则:A->B->C->X(1.0)、A->D-X(2.0)

    第二原则,pom中依赖顺序:A->B->X(1.0)、A->D-X(2.0)

    优化依赖

    mvn dependency:list

    mvn dependency:tree

    mvn dependency:analyze

    Used undeclared dependencies,项目使用到但没有显示声明的。

    Unused declared dependencies,项目中没有使用到但显示声明的。

    Used undeclared dependencies风险:当前项目直接使用依赖A,比如通过import声明引入并使用,而A是传递依赖,当升级直接依赖时,相关传递依赖的版本也可能变化,比如A的一个接口改变,于是当前项目无法编译,不易排查错误。

    Unused declared dependencies要注意:不应该简单的直接删除声明,要仔细分析。由于dependency:analyze只分析编译主代码和编译测试代码需要用到的依赖,一些执行测试和运行时需要的依赖它就发现不了。

    展开全文
  • 新手创建一个maven管理项目时,会遇到不知道GroupID、ArtifactID怎么填写认识模糊问题,做个简单说明: 1、GroupId(Group): 项目所属组织唯一标识符,对应项目中java包结构(main目录里java目录结构)。...

    新手创建一个maven管理的项目时,会遇到不知道GroupID、ArtifactID怎么填写认识模糊的问题,做个简单说明:

    1、GroupId(Group):

    项目所属组织的唯一标识符,对应项目中java的包结构(main目录里java的目录结构)。一般是公司官网域名反写或组织名:比如com.baidu.项目名 或 com.aigov.项目名。com叫域,后面是你自己起的域名。

    GroupID定义了项目springbootmybatis属于哪一个组:com.aigov.springbootmybatis

    2、ArtifactId(Artifact):

    项目的唯一标识符,对应项目的名字,是项目根目录的名称。

    ArtifactID定义了一个maven项目在组中的唯一id:假如我为我的springbootmybatis项目写了一个专属的公共包,那么我定义这个公共包的ArtifactId时可以这样写:springbootmybatis_com

    3、Version

    指定项目当前的版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。 

    4、Name

    直接影响启动类类名。

    5、Packaging: 
    可选,maven会使用默认值jar,表示工程打包格式。

    拓展--maven坐标的作用

    maven是一个构件库,里面涵盖了大量构件(就是我们平时使用的jar、war文件)。

    maven库中的所有构件都有自己的唯一坐标,这些坐标就是由上面解释到的这几个元素组成的。

    构件的坐标信息在项目的pom文件中,配置好坐标,就可以通过坐标任意引用特定构架。

    举个栗子:

    现有这样一个使用环境:要在一个Spring boot整合Mybatis的maven项目:springbootmybatis引用一个专门为他写的公共包(也是个maven工程)springbootmybatis_com。如下操作即可:

    springbootmybatis_com 的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>
    
        <!-- 这是springbootmybatis_com 的坐标 -->
    	<groupId>com.aigov</groupId>
    	<artifactId>springbootmybatis_com </artifactId>
    	<version>2.3</version>
    	<packaging>jar</packaging>
    
    。。。。(还有其他配置,不写出来了)

     现在 springbootmybatis 工程的pom文件中加上springbootmybatis_com的坐标即可 实现引用:

    <?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>
    
        <!-- springbootmybatis 的坐标-->
    
        <groupId>com.aigov</groupId>
        <artifactId>springbootmybatis</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>jar</packaging>
        
        <dependencies>
    
        <!--在这里添加 springbootmybatis_com 的坐标,实现依赖-->
            <dependency>
                <groupId>com.aigo</groupId>
                <artifactId>springbootmybatis_com</artifactId>
                <version>2.3</version>
            </dependency>
        </dependencies>
    
    。。。。。(pom中其他信息不显示出来了)

     

    展开全文
  • Maven坐标

    2014-11-19 21:55:00
    Maven坐标为各种构件引入秩序,每个构件都必须明确自己坐标。 Maven坐标通过groupId、artifactId、version、packaging、classifier定义。 <dependency> <groupId>org.sonatype.nexus</...
  •  Maven坐标和依赖(何为maven坐标) ----------   maven的世界中拥有数量非常巨大的构件...maven定义了这样一组规则:世界上任何一个构件都可以使用maven坐标唯一标识,maven坐标的元素包括groupId,artifactId
  • maven 坐标

    2017-03-18 16:18:00
    maven坐标元素包括:groupId,artifactId,version,packageing,classifier maven 内置中央仓库地址:http://repol.maven.org/maven2 maven 坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己...
  • GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出,如果你要把你项目弄到maven本地仓库去,你想要找到你项目就必须根据这两个id去查找。 GroupId一般分为多个段,这里我只说两段,第一段为域,第...
  • maven坐标

    2017-12-08 20:14:21
    Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己坐标,而一组Maven坐标是通过一些元素定义,它们是groupId、artifactId、version、packaging、classifier。 groupId:定义当前Maven项目...
  • maven的groupId和artifactId 区分  groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。 groupI...
  • Maven坐标组成

    2019-06-27 19:41:06
    1:Maven坐标的定义: Maven坐标就是使用坐标来对maven文件进行唯一识别的一套规则,坐标是为了方便别的地方引用到项目。Maven的坐标元素包括groupId、artifactId、version、packaging、classfier。只要我们提供正确...
  • 就像我们在平面直角坐标系上找到一个点需要它x,y坐标一样,我们在maven库中找到一个依赖并下载下来它也需要一个坐标GroupId和ArtifactId就是这个坐标groupId一般分为多个部分,第一部分为域,第二部分为公司...
  • groupId和artifactId被统称为“坐标”,是为了保证项目唯一性而提出。如果你要把项目弄到maven仓库中,查找时候就必须用groupId和atifactId去查找。 二:规范 groupId一般分为多段。这里我只说两段: 第一...
  • Maven的GroupID和ArtifactID

    千次阅读 2018-06-27 09:55:07
    GroupId和ArtifactId被统称为“坐标”是为了保证项目唯一性而提出,如果你要把你项目弄到maven本地仓库去,你想要找到你项目就必须根据这两个id去查找。 GroupID是项目组织唯一标识符,一般可以分为多段,实际...
  • 问题现象:maven的groupId和artifactId到底指的是什么 问题解释:groupid和artifactId被统称为“坐标” 问题原因:groupid和artifactId为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想...
  • 最近用Maven创建工程,一直搞不懂Maven的GroupID和ArtifactID是什么,直到看了网上的一篇文章才明白,在此与大家分享分享  本文转载于一问网友的回答(略修改)  地址:...
  • maven坐标问题

    2017-04-28 11:57:57
    Maven坐标详解 groupId  一般对应项目名称。例如:com.qupeng.test.maven,项目名称是mavenartifactId  一般对应模块名称。例如:maven-coordinate,模块名称是coordinate,一般还建议加上项目前缀version  ...
  • Maven坐标:世界上任何一个构件都可以用maven坐标唯一标识,maven坐标元素包括:groupId, artifactId, version, packaging, classifier   maven坐标详解   1) groupId:定义当前maven项目隶属实际...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,872
精华内容 748
关键字:

maven坐标的groupid