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

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

Maven 引入外部Jar包方式

<dependency>
	<groupId>dingdinggroupId>
	<artifactId>dingdingartifactId>
	<version>2.8version>
	<scope>systemscope>
	<systemPath>${project.basedir}/lib/taobao-sdk-java.jarsystemPath>
dependency>

属性说明:

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

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

处理项目打包

1.resource方式处理打包

 <build>
   <resources>
    <resource>
      <directory>libdirectory>
      <targetPath>/BOOT-INF/lib/targetPath>
      <includes>
        <include>**/*.jarinclude>
      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.bootgroupId>
    <artifactId>spring-boot-maven-pluginartifactId>
    <version>${spring-boot.version}version>
    <configuration>
        
        <includeSystemScope>trueincludeSystemScope>
    configuration>
    <executions>
        <execution>
            <goals>
                <goal>repackagegoal>
            goals>
        execution>
    executions>
plugin>

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

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

<dependency>
	<groupId>dingdinggroupId>
	<artifactId>dingdingartifactId>
	<version>2.8version>
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中先配置好仓库地址信息。


<distributionManagement>
    <repository>
        <id>nexus-releasesid>
        <url>
            http://172.17.103.59:8081/nexus/content/repositories/releases/  
        url>
    repository>
    <snapshotRepository>
        <id>nexus-snapshotsid>
        <url>
            http://172.17.103.59:8081/nexus/content/repositories/snapshots/  
        url>
    snapshotRepository>
distributionManagement>

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

Idea操作

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

命令操作
mvn clean install -s xxxSetting.xml

你可能感兴趣的:(Java基础,Maven,部署,maven,jar,java)