Maven 引入非镜像外部Jar包的详解以及如何将本地jar包推送到maven远程仓库中

项目开发过程中可能会需要引入一些非maven仓库的存在的jar包,比如jar是ant打包过来的。这个时候maven上传包到仓库可能会很困难,就绪要在项目中手动去引用jar包。

Maven 引入外部Jar包方式

<dependency>
    <groupId>dingding</groupId>
    <artifactId>dingding</artifactId>
    <version>2.8</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/taobao-sdk-java.jar</systemPath>
</dependency>

属性说明:

  • groupId:自定义
  • artifactId:自定义
  • version:自定义
  • scope:必须是system
  • systemPath:jar包的路径(idea编写的时候会有提示的)

通过上述方式,在开发环境没有什么问题,不会存在什么包找不到等情况。但是,maven project 部署一般打包发布,所以打包是需要额外配置的(上述的第一二中方式不需要做额外处理)以上方式是maven引用本地依赖,但只是引用,可能在idea中开发书写代码的时候没有什么问题。但打包或运行会产生,这个时候需要打包得时候把外部jar包打包到可加载jar路径。

处理项目打包

1.resource方式处理打包

 <build>
   <resources>
    <resource>
      <directory>lib</directory>
      <targetPath>/BOOT-INF/lib/</targetPath>
      <includes>
        <include>**/*.jar</include>
      </includes>
    </resource>
   </resources>
 </build>

directory:指定lib文件夹的位置,由于是相对工程根目录,所以直接写上lib即可。
targetPath:打包到的文件夹位置,写上BOOT-INF/lib即可,或者是WEB-INF/lib。。
includes:一般都是以jar结尾,就写*/.jar。

2.spring-boot-maven-plugin

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot.version}</version>
    <configuration>
        <!-- 打包进/BOOT-INF/lib/ -->
        <includeSystemScope>true</includeSystemScope>
    </configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

3.推送包到maven仓库中,然后进行引用

安装jar包到本地仓库中
mvn install:install-file -Dfile=jar包的位置 -DgroupId=上面的groupId -DartifactId=上面的artifactId -Dversion=上面的version -Dpackaging=jar
然后maven引入

<dependency>
    <groupId>dingding</groupId>
    <artifactId>dingding</artifactId>
    <version>2.8</version>
</dependency>

推送包到远程仓库

mvn deploy:deploy-file -DgroupId=com.zhenai.dakehu -DartifactId=dakehu-commons -Dversion=1.0.0-SNAPSHOT -Dpacckaging=jar -Dfile=dakehu-commons-1.0.0-SNAPSHOT.jar -DrepositoryId=maven-snapshots -Durl=http://112.124.33.150:8081/repository/maven-snapshots/

这3中方式任选一种即可。

4.maven clean deploy

如果直接有源码的话可以直接在idea中先clean再deploy上去。不过要在根pom中先配置好仓库地址信息。

<!--定义snapshots库和releases库的nexus地址-->
<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <url>
            http://172.17.103.59:8081/nexus/content/repositories/releases/  
        </url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <url>
            http://172.17.103.59:8081/nexus/content/repositories/snapshots/  
        </url>
    </snapshotRepository>
</distributionManagement>

maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写)

Idea操作

image.png

命令操作

mvn clean install -s xxxSetting.xml
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容