关于Maven dependency中外部jar包依赖的问题
来源:互联网 发布:炫动相机软件 编辑:程序博客网 时间:2024/04/29 04:09
在maven项目中,我们的项目依赖一般取自local的repository或者远程的repository,比如下面这个配置:
<dependency><groupId>commons-cli</groupId><artifactId>commons-cli</artifactId><version>1.2</version></dependency>
一般而言,maven会先去本地的repository寻找,如果找不到,就会依据<repository>的定义,去远程的repository去找依赖。
不过有时候,我们依赖的jar并不在任何repository中,可能就是从同事那里拷贝来的一个孤独的jar文件。怎么办?
Maven有办法处理这种情况,它支持systemscope的定义方式,可以加载本地任意路径下的jar包,定义如下:
<dependency><groupId> commons-cli </groupId><artifactId> commons-cli </artifactId><version>1.0.0</version> <scope>system</scope><systemPath>${basedir}/libs/commons-cli.jar</systemPath></dependency>
这样,把想要加载的jar包:commons-cli.jar放到工程的libs/目录下,在java code中就可以引用这个jar包中的class了。
往往在项目开发中,我们需要把整个项目加上依赖,打成一个jar包,这样放到任何地方都可以独立运行,不依赖于任何其他jar包,非常方便。
这个时候,我们会发现,对于<scope>system</scope>,maven不会把这个jar包的内容打包到最后的jar-with-dependencies.jar中,怎么办?
后来在网上找到一个有趣的办法:既然maven可以把repository中的依赖打到最后的jar包中,那么把这个外部的jar包放到repository中,也就可以让maven把这个外部的jar包打到最后的jar包中。
Maven支持安装jar包到本地的repository,所以这个方法是可行的,具体pom配置如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <executions> <execution> <id>install-external</id> <phase>clean</phase> <configuration> <file>${basedir}/libs/commons-cli.jar</file> <repositoryLayout>default</repositoryLayout> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <generatePom>true</generatePom> </configuration> <goals> <goal>install-file</goal> </goals> </execution> </executions></plugin>
这样:Mvn clean就会安装这个jar包,然后在mvn package就可以打出带有这个jar包的big jar包。
安装jar包的过程之所以在clean phase阶段,是因为maven需要项目的所有依赖都得到解决,之后才开始执行。
我试了试,果然work,非常好使。
参考:
http://eureka.ykyuen.info/2014/06/10/maven-include-system-scope-dependency-in-maven-assembly-plugin/
- 关于Maven dependency中外部jar包依赖的问题
- 查找maven依赖的jar mvn dependency:tree解决多项目多引入jar包版本导致的问题
- maven 依赖的jar包打包问题
- maven 将依赖的外部jar包 统一打到指定目录文件夹中取
- 查看maven中jar的依赖包
- 如何解决Maven jar包依赖版本冲突(dependency collision)
- maven打包--包含dependency的jar包
- maven export dependency 导出依赖包的命令,jar 安装到本地
- 用dependency:tree查看maven引入jar包的传递依赖
- 用dependency:tree查看maven引入jar包的传递依赖
- maven依赖本机的jar包。无法打包到war中问题
- maven中依赖包的问题
- maven工程无依赖jar包的问题
- Spring3依赖的外部jar包清单
- Spring的外部依赖jar包
- 将外部的jar包配置到maven项目中
- maven将lib的依赖包也打进jar中
- Eclipse中Maven依赖的jar包乱码问题解决
- 第15章:计时器(Chronometer)
- 递归摘录
- HDOJ 2084 数塔(动规)(水)
- 1657: 求日龄
- C 编写求一个数组中最大值的函数
- 关于Maven dependency中外部jar包依赖的问题
- Bootstrap的js插件之警告框(alert.js)
- poj 1989 数学(求一个序列的最短非子序列长)
- Leetcode House Robber系列
- 黑马程序员——Java基础——命名规则、标识符、关键字和运算符
- muduo::Buffer分析
- 【GDOI】8.5~7三日总结
- android Caused by: java.lang.IllegalArgumentException: Binary XML file line #7: Must specify unique
- UITableView 表视图