maven项目引入外部jar包
为sdk添加一个功能,但是测试比较困难,即需要
- 提交代码,让高P审核代码
等步骤,为了能在本地自测。需要将sdk打包,然后放到一个项目中去测试。
因为需要给QA提测,所以需要提供一个接口,而我们项目一般都是maven项目,即用pom.xml管理包。
pom管理包的方式和普通的项目不一样,所以不能用jar包方式导入。
因此可以通过:
- 搭建自己的私服,pom引用包方式不改变。
- maven项目引入外部jar包方式。
<dependency>
<groupId>gdal</groupId>
<artifactId>gdal</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/xxx.jar</systemPath>
</dependency>
NoSuchMethodError
具体报错是
java.lang.NoSuchMethodError: org.apache.commons.io.IOUtils.toByteArray(Ljava/net/URL;)
使用maven helper来分析冲突,发现commons.io并没有发生冲突。在Dependency Analyzer视图,搜索commons-io,发现有2个sdk分别引用了下面的2个不同版本的包。
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
其中1.3.2的包,没有IOUtils.toByteArray(Ljava/net/URL;)方法。听项目组内的成员说,因为SDK是向下兼容,所以,有不同版本的包则优先使用低版本的包。