如何使用maven assembly插件提供的作用域排除可传递依赖项?
我需要创建一个带有依赖项的jar。我正在使用maven assemply插件3.1.0 我想:如何使用maven assembly插件提供的作用域排除可传递依赖项?,maven,maven-assembly-plugin,transitive-dependency,Maven,Maven Assembly Plugin,Transitive Dependency,我需要创建一个带有依赖项的jar。我正在使用maven assemply插件3.1.0 我想: 包括范围compile的依赖项 排除提供了范围的依赖项 即,在以下情况下,如mvn依赖项:tree所示: [INFO] +- com.jayway.jsonpath:json-path:jar:2.2.0:compile [INFO] | +- net.minidev:json-smart:jar:2.2.1:compile [INFO] | | \- net.minidev:accesso
- 包括范围
的依赖项compile
- 排除提供了范围
的依赖项
mvn依赖项:tree
所示:
[INFO] +- com.jayway.jsonpath:json-path:jar:2.2.0:compile
[INFO] | +- net.minidev:json-smart:jar:2.2.1:compile
[INFO] | | \- net.minidev:accessors-smart:jar:1.1:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.16:provided
我想在最后一个jarjson路径中包含json-smart
,accessors-smart
,但不包括slf4j-api
使用带有依赖项的默认jar
描述符,我还将slf4japi
包含在结果jar中
1/这是预期的行为吗?这似乎与其他maven决议相矛盾
2/什么是允许获取所需内容的程序集描述符
感谢因此,它似乎无法与汇编插件配合使用,在解释了为什么它不起作用之前,我认为这是一个bug:
我在这里创建了一个最小的项目来演示这个问题:
解决方案是使用shade插件(),它正确地排除了提供了作用域的可传递依赖项(并且可以做比有关uber-jar的assembly
插件更多的事情) 您使用哪个版本的maven assembly plugin?oups抱歉-版本3.1.0,也添加在主说明中。根据预定义的描述符,应该没有打包提供的jar范围。你确定这在其他地区不存在吗…你能显示完整的pom文件吗?我在这里做了一个最小的复制项目:maven shade pluing似乎做了预期的事情。你成功地使用了shade插件并获得了一个内部包含jar而非类的jar吗?@Caroh我没有尝试,我不知道这是否可能,抱歉