【问题标题】:Getting a deployed jar-with-dependencies without the transitive dependencies在没有传递依赖项的情况下获取已部署的 jar-with-dependencies
【发布时间】:2012-08-21 19:41:11
【问题描述】:

我正在使用 maven-assembly-plugin 创建一个 jar 文件,其中包含运行我的应用程序所需的所有依赖项。该程序集的配置使用了一个指向我的自定义程序集的descriptorRef。

当我查看 maven 存储库时,我看到了 jar、pom 和 jar-with-dependencies,这是练习的重点。

当我使用 maven-dependency-plugin:2.4:get 拉取 jar-with-dependencies 时,除了将 jar-with-dependencies 复制到 dest 之外,它还将传递依赖项拉下到我的本地 maven 存储库。

我期望看到的行为,因为 jar-with-dependencies 已经嵌入了所有内容,所以只会检索该 jar 文件。换句话说,我期待我在调用依赖项时看到的行为:get with -Dtransitive=false。

我需要传递标志这一事实是否表明某些内容不正确或缺失,大概是在 pom 或程序集描述符中?我应该在 pom 或程序集中做一些不同的事情,以便 jar-with-dependencies 有一个空的依赖项列表吗?

【问题讨论】:

  • 我也在为此苦苦挣扎。没有人可以直接回答是/否:同一 POM 中具有不同分类器的工件是否有可能携带与主工件不同的依赖关系?

标签: maven-assembly-plugin maven-dependency-plugin


【解决方案1】:

maven-dependency-plugin 不(也不能)知道您的 jar-with-dependencies 确实已经包含所有依赖项。它只会查看您的工件的 POM 文件并下载 JAR 及其依赖项,除非您指定 -Dtransitive=false

这正是get goal 的文档所说的:

从指定的远程存储库传递下载单个工件。

更新:

您的设置没有任何错误或缺失,但不可能让 maven 知道您的 JAR 确实包含所有依赖项。从 Maven 的角度来看,jar-with-dependencies 就像您的 Maven 存储库中的任何其他 JAR 文件一样。 Maven 对您的 JAR 文件的内容一无所知。

【讨论】:

  • 我同意 dependency:get 正在做它应该做的事情。为清楚起见编辑问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 2011-11-20
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2015-12-16
相关资源
最近更新 更多