需要把几个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>
您的采纳就是对我最大的动力,谢谢!!!
1、你可以在resources下创建一个目录lib,把自己jar包放在lib中,pom中依赖的时候写这个jar包的路径就行
2、把自己的jar包打到本地的maven仓库中,然后依赖就可以了
<dependency>
的<scope>provided</scope>
<scope>test</scope>
如有帮助,请采纳,十分感谢!