本文共 5706 字,大约阅读时间需要 19 分钟。
目录
org.apache.maven maven-artifact 3.8.1 compile
其中version标签如果不配置,则Maven自动寻找最新的版本。
将groupId+artifactId+version按照格式连接起来:
com/starfall/maven/Maven/0.0.1-SNAPSHOT/Maven-0.0.1-SNAPSHOT.jar
org.apache.maven maven-artifact 3.8.1 jar test spring-core org.springframework true
项目的主程序和测试程序不同阶段的有效性:
B依赖于其他库C。如果,另外一个项目 A想要使用 B ,那么A 项目也需要使用库C。
但是 A依赖B、B依赖C、那么A能不能使用C,需要查看B依赖C的范围是不是compile:
此时,Maven 提供一些功能来控制可传递的依赖的程度。
功能 | 功能描述 |
---|---|
依赖调节 | 决定当多个手动创建的版本同时出现时,哪个依赖版本将会被使用。 如果两个依赖版本在依赖树里的深度是一样的时候,第一个被声明的依赖将会被使用。 |
依赖管理 | 直接的指定手动创建的某个版本被使用。例如当一个工程 C 在自己的依赖管理模块包含工程 B,即 B 依赖于 A, 那么 A 即可指定在 B 被引用时所使用的版本。 |
依赖范围 | 包含在构建过程每个阶段的依赖。 |
依赖排除 | 任何可传递的依赖都可以通过 "exclusion" 元素被排除在外。举例说明,A 依赖 B, B 依赖 C,因此 A 可以标记 C 为 "被排除的"。 |
依赖可选 | 任何可传递的依赖可以被标记为可选的,通过使用 "optional" 元素。例如:A 依赖 B, B 依赖 C。因此,B 可以标记 C 为可选的, 这样 A 就可以不再使用 C。 |
例如在引入依赖Spring-core的jar时候,会同步的引入commons-logging的jar,说明Spring的jar依赖于commons-logging。
但是如果此时想要从依赖中排除掉commons-logging的jar时候,需要如下做法:
排除配置:
org.springframework spring-core 4.0.0.RELEASE commons-logging commons-logging
(3.1)路径最短
A项目依赖B、B项目依赖C。此时B、C中都有不同版本的log4j的依赖,在A项目中根据路径最短原则Maven会引用B声明的log4j版本。
(3.2)路径相同时,先声明者优先。
A项目依赖B和C,B、C中有两个版本的log4j依赖,则A中使用先声明的那个项目的依赖。
如果存在自己打包的jar,不会存在Maven本地仓库、中央仓库及其远程仓库。只能在 src 文件夹下添加 lib 文件夹,然后将jar复制到该目录下。例如:
那么 Maven 构建将会失败,因为它在编译阶段使用指这个库无法下载或无法找到。
此时需要添加外部依赖项:
ldapjdk ldapjdk 1.0 system ${basedir}\src\lib\ldapjdk.jar
1中是把jar复制在项目中,另一种方法是将jar安装到Maven本地仓库中,这样可以使用正常的依赖引入此jar
示例:kaptcha,它是一个流行的第三方Java库,它被用来生成 “验证码” 的图片,以阻止垃圾邮件,但它不在 Maven 的中央仓库中。
安装 “kaptcha” jar 到Maven 的本地资源库,参考:
2.1、先准备好jar包,命名版本,并放在一个目录下:c:\kaptcha-2.3.jar
执行命令:
mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
执行结果:
D:\>mvn install:install-file -Dfile=c:\kaptcha-2.3.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion=2.3 -Dpackaging=jar[INFO] Scanning for projects...[INFO] Searching repository for plugin with prefix: 'install'.[INFO] ------------------------------------------------------------------------[INFO] Building Maven Default Project[INFO] task-segment: [install:install-file] (aggregator-style)[INFO] ------------------------------------------------------------------------[INFO] [install:install-file][INFO] Installing c:\kaptcha-2.3.jar to D:\maven_repo\com\google\code\kaptcha\2.3\kaptcha-2.3.jar[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESSFUL[INFO] ------------------------------------------------------------------------[INFO] Total time: < 1 second[INFO] Finished at: Tue May 12 13:41:42 SGT 2014[INFO] Final Memory: 3M/6M[INFO] ------------------------------------------------------------------------
出现上述画面kaptcha-2.3.jar被复制到Maven本地仓库。
2.2、在pom中引用该jar:
com.google.code kaptcha 2.3
4.0.0 com.starfall.ssm SSM 0.0.1-SNAPSHOT war 4.3.18.RELEASE 1.8.0 3.4.6 org.springframework spring-core ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-test ${spring.version} org.aspectj aspectjrt ${aop.version} org.aspectj aspectjweaver ${aop.version} org.springframework spring-webmvc ${spring.version} org.mybatis mybatis ${mybatis.version}
转载地址:http://mplci.baihongyu.com/