我需要创建一个jar-with-dependencies。我正在使用maven assemply插件3.1.0。
我想:
compile
的依赖关系,以及传递provided
的依赖项。 IE,在mvn dependency: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
我想要包含在最后一个jar json-path
,json-smart
,accessors-smart
但不是slf4j-api
。
使用默认的jar-with-dependencies
描述符,我在生成的jar中也包含slf4j-api
。
1 /这是预期的行为吗?这似乎与其他maven分辨率相矛盾。
2 /什么是允许得到我想要的装配描述符?
由于
答案 0 :(得分:0)
所以,似乎只是不能使用程序集插件,直到解释为什么不然,我相信这是一个错误:https://issues.apache.org/jira/browse/MASSEMBLY-883
我在这里创建了一个最小的项目来演示问题:https://github.com/fanf/test-maven-assembly
解决方案是使用正确排除范围provided
的传递依赖关系的树荫插件(https://maven.apache.org/plugins/maven-shade-plugin)(并且可以比关于uber-jar的assembly
插件做更多的事情)。