目录
maven有两种引用第三方jar包的形式:一种是scope为system,直接指定jar路径引用;另一种是先安装到本地仓库再引用。
一、指定路径引用
要想直接指定系统路径引用,需要把scope改成system,然后再添加systemPath标签指定需要引用的jar包路径,如果jar是在项目路径的文件夹中的,可以使用${ project.basedir }来代替项目根目录路径。引用例子如下所示:
<dependency>
<groupId>com.smartbi</groupId>
<artifactId>smartbi-SDK</artifactId>
<version>9.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/lib/smartbi-SDK.jar</systemPath>
</dependency>
如果是将项目打包成war包,则需要在配置编译插件时,设置includeSystemScope为true,并且把第三方jar包的文件夹设置成资源文件夹。pom.xml中的build标签下的配置例子如下所示:
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- 设置编译版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/lib</directory> <!—第三方jar包存放路径-->
<targetPath>WEB-INF/lib</targetPath> <!—编译打包后的目标路径-->
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</resources>
</build>
如果是将项目打包成可运行的jar包,或者是maven多模块项目中,B模块需要引用第三方jar包,A模块引用B模块的情况,使用上面的方法在打包后运行会找不到第三方jar包的类和方法。所以这种情况建议使用下面的先安装再引用的方法。
二、先安装再引用
先把第三方的jar包安装到本地仓库,可以使用mvn命令安装,也可以在pom.xml文件中配置插件安装。
mvn命令如下:
mvn install:install-file -Dfile=D:/smartbi-SDK.jar -DgroupId=com.smartbi -DartifactId= smartbi-SDK -Dversion=9.3 -Dpackaging=jar
pom.xml文件中的插件配置如下:
<!-- 安装第三方jar包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>install-smartbi-SDK</id>
<phase>clean</phase> <!—在clean阶段进行安装-->
<configuration>
<file>${project.basedir}/src/main/lib/smartbi-SDK.jar</file>
<repositoryLayout>default</repositoryLayout>
<groupId>com.smartbi</groupId>
<artifactId>smartbi-SDK</artifactId>
<version>9.3</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
<goals>
<goal>install-file</goal>
</goals>
</execution>
</executions>
</plugin>
安装完之后,和其它jar包一样,直接在pom.xml文件中引用即可。引用例子如下所示:
<dependency>
<groupId>com.smartbi</groupId>
<artifactId>smartbi-SDK</artifactId>
<version>9.3</version>
</dependency>