【发布时间】:2018-09-21 21:23:16
【问题描述】:
我需要创建一个 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/ 什么是允许得到我想要的东西的程序集描述符?
谢谢
【问题讨论】:
-
您使用哪个版本的 maven-assembly-plugin?
-
很抱歉 - 版本 3.1.0,也在主要描述中添加。
-
根据预定义的描述符,应该没有 jar 提供的范围被打包。你确定它在其他区域不存在...你能显示完整的 pom 文件吗?
-
我在这里做了一个最小的复制项目:github.com/fanf/test-maven-assembly
-
maven-shade-pluing 似乎符合预期。
标签: maven maven-assembly-plugin transitive-dependency