Maven项目打包时添加本地jar包

在开发项目时,有些 jar 包是非 maven 仓库提供的第三方 jar 包,比如七牛的 sdk,阿里的 sdk 等等。在项目开发时,有以下两个方案来引入、打包。

以alipay-sdk-java-3.0.0.jar这个 jar 包为例

方案一 安装本地jar包到本地仓库

这个方案有个缺点,就是其他开发人员也必须在自己的电脑上执行步骤1的安装命令,安装 jar 包到自己本地仓库。


1. 本地安装

在alipay-sdk-java-3.0.0.jar文件目录下执行命令,安装此 jar 包到本地 maven 仓库中

mvn install:install-file -Dfile=alipay-sdk-java-3.0.0.jar -DgroupId=com.aliyun -DartifactId=alipay-sdk-java -Dversion=3.0.0 -Dpackaging=jar

2.普通方式导入jar包

在本地安装第三方 jar 后在项目 pom 文件中就可以像添加 maven 的 jar 包依赖一样

<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>alipay-sdk-java</artifactId>
   <version>3.0.0</version>
</dependency>

方案二 在项目 pom 中配置


1.在项目根目录创建libs文件夹将使用的jar包放入其中
2.jar包以scope为system的方式导入pom文件

<dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>alipay-sdk-java-3.0.0</artifactId>
   <version>3.0.0</version>
   <scope>system</scope>
   <systemPath>${project.basedir}/libs/alipay-sdk-java-3.0.0.jar</systemPath>
</dependency>

3.打包
3.1 打成 war包 添加maven-war-plugin插件配置

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-war-plugin</artifactId>
   <configuration>
      <webResources>
         <resource>
            <directory>${project.basedir}/libs</directory>
            <targetPath>WEB-INF/lib</targetPath>
            <includes>
               <include>**/*.jar</include>
            </includes>
         </resource>
      </webResources>
   </configuration>
</plugin>

3.2 打成 jar包

<plugin>
    <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-maven-plugin</artifactId>
     <executions>
         <execution>
             <goals>
                 <goal>repackage</goal>
             </goals>
         </execution>
     </executions>
     <configuration>
         <includeSystemScope>true</includeSystemScope>
     </configuration>
 </plugin>


以上两个方案选择一个,就可以愉快地开发项目了。

后面使用 maven 命令打包时也可以将alipay-sdk-java-3.0.0.jar打包到最终的包中啦。

-- 跳过测试

mvn clean package -Dmaven.test.skip=true
上一篇:基于PLC的物料自动称量控制系统称重配料物料混合程序组态设计


下一篇:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? 未配置