web项目中需要引用第三方私有jar,又不想自己创建私服,所以问了一下度娘,很多文章都提到了两个参数(system,systemPath),
也就是这两个参数就能解决这个问题。仅仅做个笔记,害怕自己忘记。有更好的方式,欢迎留言。
以Linux系统下为例
1、将私有jar放入项目的/WEB-INF/lib目录
2、设置系统环境变量
a.编辑profile文件 vi /etc/profile
b.在末尾新增系统变量,如 export PRIVATE_THIRD_JAR=/zfc/work/source
c.退出并保存 wq
d.使环境变量生效 source /etc/profile
3、项目的pom.xml修改
a.一般配置
<dependency>
<groupId>xxxx</groupId>
<artifactId>yyyy</artifactId>
<version>3.2.2.8</version>
</dependency>
b.指定系统绝对路径配置
<dependency>
<groupId>xxxx</groupId>
<artifactId>yyyy</artifactId>
<version>3.0.0.2</version>
<scope>system</scope>
<systemPath>${PRIVATE_THIRD_JAR}/zzzz/src/main/webapp/WEB-INF/lib/***.jar</systemPath>
</dependency>
说明:
1、PRIVATE_THIRD_JAR=/home/zfc/work
a.PRIVATE_THIRD_JAR 这个名字可以自定义,只要项目pom.xml使用定义的名字即可
b./home/zfc/work 这个路径为源码所在路径,需要根据具体的自己路径设置
c.systemPath 私有jar必须放在WEB-INF/lib里面,不然maven打包的时候不会将jar拷贝至lib目录
2、 参数说明
<!-- 依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。
- compile :默认范围,用于编译
- provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath
- runtime: 在执行时需要使用
- test: 用于test任务时使用
- system: 需要外在提供相应的元素。通过systemPath来取得
- systemPath: 仅用于范围为system。提供相应的路径
- optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用 -->
<scope> test </scope>
<!-- 仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件
系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}。 -->
<systemPath></systemPath>
3、操作时需要注意用户权限问题