当前位置: 代码网 > it编程>编程语言>Java > Maven引入与打包指定目录下的第三方sdk的几种方法

Maven引入与打包指定目录下的第三方sdk的几种方法

2024年09月11日 Java 我要评论
针对远程仓库没有的jar包,应该如何引入与打包?1、deploy到远程仓库申请账号与权限,使用mvn deploy命令发布到远程仓库或者是私有仓库。1、在maven的conf/settings.xml

针对远程仓库没有的jar包,应该如何引入与打包?

1、deploy到远程仓库

申请账号与权限,使用mvn deploy命令发布到远程仓库或者是私有仓库。

1、在maven的conf/settings.xml文件配置远程仓库的认证信息

<settings>
  <!-- 配置远程仓库的认证信息(以id标签为标识) -->
  <servers>
    <server>
      <id>nexus</id>
      <username>your-nexus-username</username>
      <password>your-nexus-password</password>
    </server>
  </servers>
</settings>

3、使用deploy命令发布到远程仓库

mvn deploy:deploy-file \
-dgroupid=com.dist.model \
-dartifactid=dist-model-api \
-dversion=1.0.0-snapshot \
-dpackaging=jar \
-dfile=/users/laizhenghua/downloads/jar/dist-model-api-1.0.0-snapshot.jar \
-durl=http://10.60.10.38:8081/repository/maven-releases \
-drepositoryid=nexus

这种方式是比较推荐的,所有的依赖都在远程仓库上进行管理,其他人使用时直接添加gav坐标即可,无需添加额外的配置,非常简单与方便。

2、install到本地仓库

mvn install:install-file \
-dmaven.repo.local=/users/laizhenghua/soft/maven/repository \
-dgroupid=com.dist.engine \
-dartifactid=dist-engine-material \
-dversion=5.0.9-snapshot \
-dpackaging=jar \
-dfile=/users/laizhenghua/downloads/jar/dist-engine-material-5.0.9-snapshot.jar

# 命令参数说明
# -dmaven.repo.local 本地仓库位置
# -dgroupid gav坐标信息的g
# -dartifactid gav坐标信息的a
# -dversion gav坐标信息的v
# -dpackaging 文件类型
# -dfile 文件

install到本地后,也是添加gav坐标就能在当前工程引入此依赖,但是这种方式协同开发不方便,其他人也要用到此依赖时,也需要拿到jar包后,在本地手动install一下,无法做到共享。

3、通过idea的add as library引入

在当前工程新建lib目录,将第三方的sdk或jar包都放到此目录下,如

在这里插入图片描述

在通过idea的add as library...功能就能引入第三方的sdk或者是jar包,如下图

但是这种方式也有弊端,比如其他人接手此项目时,也得手动add as libraty...不太方便。

4、基于3的改进通过maven配置引入

方式3有一定的局限性,我们希望其他人接手项目时,不需要做任何改动也能正常引入所有依赖正常启动项目。

1、maven引入指定目录的jar,即读取本地的jar

<!--
1.新增scope和systempath标签
2.${project.basedir}就是当前工程目录
-->
<dependency>
    <groupid>com.dist.sdk</groupid>
    <artifactid>sdk-api</artifactid>
    <version>5.0.8-snapshot</version>
    <scope>system</scope>
    <systempath>${project.basedir}/lib/sdk-api-5.0.8-snapshot.jar</systempath>
</dependency>

2、增加打包扫描的配置,否则打包时不会将scope=system的依赖打进去。

<plugins>
    <plugin>
        <groupid>org.springframework.boot</groupid>
        <artifactid>spring-boot-maven-plugin</artifactid>
        <!--增加这个配置-->
        <configuration>
            <skip>true</skip>
            <includesystemscope>true</includesystemscope>
        </configuration>
        <executions>
            <execution>
                <phase>none</phase>
            </execution>
        </executions>
    </plugin>
</plugins>

详见下图

3、打jar包发布运行时,仍然没有把scope=system的依赖打进去,就需要新增如下配置

<resources>
    <resource>
        <directory>src/main/resources</directory>
    </resource>
    <!--jar包添加第三方lib-->
    <resource>
        <directory>${project.basedir}/lib</directory>
        <targetpath>boot-inf/lib/</targetpath>
        <includes>
            <include>*.jar</include>
        </includes>
    </resource>
</resources>

4、打war包时需要通过插件配置指定lib目录才行,如

<!--war包添加第三方lib-->
<plugin>
    <groupid>org.apache.maven.plugins</groupid>
    <artifactid>maven-war-plugin</artifactid>
    <configuration>
        <webresources>
            <resource>
                <directory>${project.basedir}/lib</directory>
                <targetpath>web-inf/lib/</targetpath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </webresources>
    </configuration>
</plugin>

到此这篇关于maven引入与打包指定目录下的第三方sdk的文章就介绍到这了,更多相关maven引入打包第三方sdk内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com