maven 坐标
groupId :定义当前maven项目隶属的实际项目。首先,maven项目和实际项目不一定是一对一的关系。
artifactId : 该元素定义实际项目中的第一个maven项目模块,推荐的做法是使用实际项目名称作为artifactid的前缀,作用在于方便寻找实际构件。
version : 该元素定义maven项目当前所处的版本,其中SNAPSHOT为快照版本.
packaging : 该元素定义maven项目的打包方式。首先,打包方式通常与所生成构建的文件扩展名对应。可以支持jar和war的打包,莫非为jar方式。
classifier:该元素用来帮助定义构建输出一些附属构建。附属构建与主构建对应。如主构件是nexuc-indexer-2.0.0.ar,该项目可能还会通过使用一些插件生成
如nexus-indexer-2.0.0-javadoc.jar,nexus-indexer-2.0.0-sources.jar这样一些附属构件,其中包含了java的文档和源码。
maven中的一览范围就是用来控制依赖与这三种cleasspath(编译classpath,测试classpath,运行classpath)的关系,maven有一下几种依赖范围:
compile : 编译依赖范围。如果没有指定,就会默认使用该依赖范围。使用此依赖范围的Maven依赖,对于编译、测试、运行三种classpath都有效、典型的例子是spring-core,在编译、测试和运行的时候都需要使用该依赖。
test : 测试依赖范围。使用此依赖范围的Maven依赖,只对于测试classpath有效,在编译主代码或者运行项目的使用时将无法使用此类依赖。典型的例子是junit,它只是在编译测试代码及运行测试时候才需要。
provided : 已提供依赖范围。使用此依赖范围的maven依赖,对于编译和测试classpath有效,但是运行时无效。典型的例子是sevlet-api,编译和测试项目的时候需要该依赖,但是运行时项目的时候,由于容器已经提供,就不需要Maven重复地引入一遍。
runtime : 运行时依赖范围。使用此依赖范围的Mavne依赖,对于测试和运行classpath有效,但是在编译主代码时无效。典型的例子就是JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在执行测试或者运行项目的时候才需哟啊实现上述接口的具体JDBC驱动。
system : 系统依赖范围。该依赖与三种classpath的关系,和provided依赖范围完全一致。但是,使用system范围的依赖时必须通过systemPath元素显示地制定依赖文件的路径。
由于此类依赖不是通过mavne仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植,因此应谨慎使用。systemPath元素可以引用环境变量 如:
<dependency>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stenxt</artifactId>
<version>2.0</version>
<scope>system</scope>
<systemPath>${java.hoem}/lib/rt.java</systemPath>
</denpendency>
import : 导入依赖范围。该依赖范围不会对三种classpath产生实际的影响。
maven中的传递性依赖
如果A依赖B B依赖C 我们可以说A对于B是第一直接依赖,B对于C是第二直接依赖,A对于C是传递依赖。其中第一直接依赖和第二直接依赖的范围决定了传递性依赖的范围。
依赖调解
maven中的依赖调解我们注意:当项目A同时依赖X(1.0)和依赖(2.0)这两个jar包,那么maven会根据这两个依赖的路径进行判断。
(1).路径最近者优先。
(2).当依赖路径相同的情况下,那么第一声明者优先。
可选依赖是不会被传递。
<dependency>
<groupId>javax.sql</groupId>
<artifactId>jdbc-stenxt</artifactId>
<version>2.0</version>
<optional>true</optional>
</denpendency>
排除依赖 在申明exclusion的时候只需要groupId和artifactId无需指定版本。
<dependency>
<groupId>com.juvenxu.mvnbook</groupId>
<artifactId>project-b</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>com.juvenxu.mybook</groupId>
<artifactId>project-c</artifactId>
</exclusion>
</exclusions>
</denpendency>
<dependency>
<groupId>>com.juvenxu.mybook</groupId>
<artifactId>project-c</artifactId>
<version>2.0</version>
</denpendency>
归类依赖 可以使用美元符号和大括号环绕方式引用maven属性。
申明
<properties>
<springframework.version>2.5.6</springframework.version>
</properties>
使用
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
优化依赖
通过 mvn dependency : list 可以查看当前项目的已解析依赖。
mvn dependency : tree 解析依赖树 。
mvn analyze 帮助分析当前项目的依赖。
分享到:
相关推荐
Maven简介,maven与ant比较,windows下安装配置,坐标依赖,仓库,部署第三方构建
如何输入关键字,寻找需要依赖jar的MAVEN坐标,需要提供确切的MAVEN坐标 1.Sonatype Nexus 地址: https://repository.sonatype.org 2. Jarvana 地址: http://www.jarvana.com/jarvana 3.MVNbrowser 地址: ...
NULL 博文链接:https://sgq0085.iteye.com/blog/1860636
何为Maven 构建,依赖管理,项目信息聚合 Maven核心概念 坐标,依赖,仓库,生命周期,插件 Maven最佳实践 创建、打包、发布、版本管理 项目实战 Nexus(Todo…) M2eclipse(Todo…)
主要介绍了深入理解Maven的坐标与依赖,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
该jar在maven仓库已经找不到了,需要的可以下载,然后互丢到本地仓库或者私服在添加依赖即可。
jacob-1.18的资源包还有 jacob-1.18-x64.dll和jacob-1.18-x86.dll. 把对应的windows版本扔到 C:\Windows\System32 并添加环境变量大到path中 “%SYSTEMROOT%\System32\jacob-1.18-x86.dll;”或者 “%SYSTEMROOT%\...
使用Maven核心概念介绍(坐标、依赖、仓库、插件、...任亮系列-maven坐标.mp41010.任亮系列-maven依赖介绍.mp41111.任亮系列-maven依赖范围.mp41212.任亮系列-maven依赖传递和可选依赖和排除依赖.mp41313.任亮系列-mav
介绍如何使用 POM 文件来描述项目的结构和依赖关系,以及如何使用坐标来唯一标识项目和依赖。解释 Maven 仓库的概念和作用,以及如何使用中央仓库和本地仓库。 第二部分:Maven 的核心功能 详细介绍 Maven 的核心...
Maven坐标:com.twelvemonkeys.common:common-lang:3.1.1; 标签:twelvemonkeys、common、lang、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
Maven坐标:io.springfox:springfox-oas:3.0.0; 标签:oas、springfox、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...
Maven坐标:net.java.dev.jna:jna-platform:4.3.0; 标签:java、jna、platform、中英对照文档、jar包; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的...
第5章:坐标和依赖/5.9 最佳实践/5.9.2 依赖属性使用变量 第5章:坐标和依赖/5.9 最佳实践/5.9.3 依赖关系查看 第6章:仓库/6.1 何为Maven仓库 第6章:仓库/6.2 仓库的布局 第6章:仓库/6.3 仓库的分类 第6章:仓库/...
POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。。 2、依赖管理系统(基础核心 ) maven通过坐标对项目工程所依赖的jar包统一规范管理。 3、maven定义...
Maven坐标:org.apache.flink:flink-connector-jdbc_2.12:1.14.3; 标签:apache、flink、connector、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档...
Maven坐标:commons-net:commons-net:3.3; 标签:commons、net、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...
用于 Elasticsearch 2.2 的 中文分词器,已构建好,直接放入 Elasticsearch 的plugins 目录下使用
Maven坐标:org.springframework:spring-messaging:4.3.12.RELEASE; 标签:springframework、spring、messaging、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,...
Maven坐标:commons-beanutils:commons-beanutils:1.7.0; 标签:beanutils、commons、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 ...
3、maven坐标 4、maven命令:重点理解【生命周期和阶段】和【插件和目标】 5、在eclipse中通过m2eclipse插件使用maven 6、配置和使用私服 7、实战maven,把以前一个不是用maven做的模块,移植为maven项目 这是...