本文记录 在一次开发中 偶然需要用到阿里的一个jar包,但是又无法实现从中央仓库下载到本地仓库使用,所以在网上下载下来jar包,放到项目中,在pom.xml中引用
首先在项目中新建一个lib的文件夹用来存放jar包
然后在pom.xml中添加一下代码:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>http-sdk</artifactId>
<scope>system</scope>
<systemPath>${project.basedir}/lib/http-sdk-1.1.4.0.jar</systemPath>
<version>1.1.4.0</version>
</dependency>
其中${project.basedir}一定要写,不然会出现“在windows”下可以正常编译,在Linux服务器上就“有可能”出现编译找不到jar包的错误。
标签介绍:
groupId 是(Maven)项目的唯一标识。Group ID必须满足 Java包名规范 ,这意味着是形如:org.apache.maven
,org.apache.commons
的格式。
artifactId 是不带版本号的jar的名字,唯一要求是使用小写字母,且没有特殊符号。
groupId 和 artifactId被统称为"坐标"是为了保证项目唯一性而提出的;
version 如果要发布,可以选择典型的数字和点号组成的版本号(1.0,1.1,1.0.1…)不要使用日期,因为它们通常和SNAPSHOT版本号联系在一起。如果是一个第三方的artifact,你必须使用它提供的版本号,无论这些版本号看起来多么奇怪,比如:2.0,2.0.1,1.3.1
scope 是用来限制 dependency 的作用范围的,影响 maven 项目在各个生命周期时导入的 package 的状态,主要管理依赖的部署。
scope 的作用范围:
- compile:默认值,适用于所有阶段(表明该 jar 包在编译、运行以及测试中路径均可见),并且会随着项目一起发布。
- compile:默认值,适用于所有阶段(表明该 jar 包在编译、运行以及测试中路径均可见),并且会随着项目一起发布。
- runtime:无需参与项目的编译,不过后期的测试和运行周期需要其参与,与 compile 相比,跳过了编译。如 JDBC 驱动,适用运行和测试阶段。
- provided:编译和测试时有效,但是该依赖在运行时由服务器提供,并且打包时也不会被包含进去。如 servlet-api。
- system:类似 provided,需要显式提供包含依赖的jar,不会从 maven 仓库下载,而是从本地文件系统获取,需要添加 systemPath 的属性来定义路径。
systempath
当maven依赖本地而非repository中的jar包,sytemPath用来指明本地jar包路径