微信云盘 2022-07-26 09:08 采纳率: 100%
浏览 34
已结题

maven-assembly-plugin打包插件使用

问题遇到的现象和发生背景

需要把几个maven依赖和一些自己写的代码打jar包
一部分maven依赖要完整的打进jar包,其他的不打进jar包
请问如何配置maven依赖是否打进包
最好是用maven-assembly-plugin插件,其他也行
下面是pom文件里build配置

问题相关代码,请勿粘贴截图
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
    </plugins>
  </build>
运行结果及报错内容

现在的配置只能所有依赖都打进包

我的解答思路和尝试过的方法

可能是用excludes标签,没查到详细配置方法

我想要达到的结果

可以主动配置哪些maven依赖完整的打进包,哪些不打进包

  • 写回答

4条回答 默认 最新

  • eq0284 2022-07-26 09:37
    关注

    可以不需要maven-assembly-plugin,以下办法可以参考
    方法一:
    可以增加作用域scope标签,对不想打包的依赖scope定义为provided,
    provided意思为在编译和测试的过程有效,最后生成包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突
    例如:

    <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <!-- 开发编译时需要这个依赖包,运行时不需要 -->
                <scope>provided</scope>
            </dependency>
    
    

    其他的作用域为:
    1、test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖
    2、compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去
    3、runtime在运行的时候依赖,在编译的时候不依赖
    默认的依赖范围是compile

    方法二
    采用exclusions排除依赖,比如我想依赖pro01-maven-java,但是我不想依赖由于依赖pro01-maven-java而间接依赖的commons-logging,
    (可能是版本冲突,可能是我想依赖别的版本commons-logging,凭借exclusions都可以做到)

    <dependency>
        <groupId>com.atguigu.maven</groupId>
        <artifactId>pro01-maven-java</artifactId>
        <version>1.0-SNAPSHOT</version>
        <scope>compile</scope>
        <!-- 使用excludes标签配置依赖的排除    -->
        <exclusions>
            <!-- 在exclude标签中配置一个具体的排除 -->
            <exclusion>
                <!-- 指定要排除的依赖的坐标(不需要写version) -->
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    

    您的采纳就是对我最大的动力,谢谢!!!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月4日
  • 已采纳回答 7月27日
  • 创建了问题 7月26日