maven-assembly-plugin打包插件使用

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

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

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

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

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

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

我想要达到的结果

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

可以不需要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

https://blog.csdn.net/qq_42105629/article/details/103029761?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-5-103029761-ask-7762959.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-5-103029761-ask-7762959.pc_feed_download_top3ask

1、你可以在resources下创建一个目录lib,把自己jar包放在lib中,pom中依赖的时候写这个jar包的路径就行
2、把自己的jar包打到本地的maven仓库中,然后依赖就可以了

  • 如果你打包的时候不想打进去,可以使用每个<dependency><scope>provided</scope>
  • 如果是单元测试就使用<scope>test</scope>
  • 这样打包的时候就会把包含provided和test范围的jar包

如有帮助,请采纳,十分感谢!