【问题标题】:Maven Dependency Plugin command line option to EXCLUDE optional dependencies when downloading dependencies to local directoryMaven Dependency Plugin 命令行选项,用于在将依赖项下载到本地目录时排除可选依赖项
【发布时间】:2015-08-28 23:52:53
【问题描述】:

我认为使用 maven 依赖插件命令行可以轻松下载所有依赖项,包括给定工件的传递依赖项。例如下面的两个命令可以用来下载和复制工件atmosphere-runtime的所有依赖项,只包括编译和提供的依赖项,不包括测试的依赖项,

mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:get -DgroupId=org.atmosphere -DartifactId=atmosphere-runtime -Dversion=2.3.3 -Dtype=pom

mvn org.apache.maven.plugins:maven-dependency-plugin:2.10:copy-dependencies -f <path-to-local-repo>\org\atmosphere\atmosphere-runtime\2.3.3\atmosphere-runtime-2.3.3.pom -DoutputDirectory=<path-to-target-dir> -DincludeScope=compile

但是上面的问题是它包含了被标记为可选的依赖项。继续上面的示例,标记为“atmosphere-runtime”的可选依赖项的工件“grizzly-framework-http”连同其所有传递依赖项一起被下载/复制。

有没有办法在下载依赖项时过滤掉或排除这些标记为“(可选)”的依赖项?

【问题讨论】:

标签: java maven


【解决方案1】:

为什么要手动下载依赖项? 使用 POM 文件来描述您的项目。您可以添加依赖项排除项,这些依赖项将根据您的需要下载,并可从您的本地存储库中获取。

以下是一些有用的参考资料: http://maven.apache.org/pom.html#Exclusions

【讨论】:

  • 感谢您的有用参考。好吧,我们不在我们的环境中使用 maven。我的要求只是查找并下载我希望升级的特定库的所有依赖项(包括传递)。我发现 maven 的依赖插件对此非常有用(我知道还有其他方法,例如使用 Apache ivy 等)。尽管如此,我还是不太明白如何解决前面提到的问题。
  • 创建 POM 文件,定义虚拟工件等以及所需的依赖项。从那里运行 CMD mvn compile - 不会构建任何内容,但会下载依赖项。到您当地的 mvn 存储库。
  • 谢谢安东尼奥斯。我下载依赖项没有问题。问题是如何排除那些标记为“可选”的。如果您查看我的工件“atmosphere-runtime”的以下 maven 存储库链接,mvnrepository.com/artifact/org.atmosphere/atmosphere-runtime/… 您会看到它的一些依赖项被标记为可选,com.sun.grizzly » grizzly-framework-http(可选)1.0.31 1.0.51 com.sun.grizzly » grizzly-websockets (optional) 1.9.57 2.3.22 org.apache.geronimo.specs » geronimo-servlet_3.0_spec (optional) 1.0 ✔ 现在的问题是我如何过滤掉上面的.
猜你喜欢
  • 2013-03-05
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多