【发布时间】:2012-04-24 08:08:18
【问题描述】:
我正在尝试对一个项目进行去mavenize。
有没有办法将这个 maven 项目所需的所有 jar 提取到一个文件夹中?
(我是 maven 的新手,所以请;提供的说明应该是虚拟模式)谢谢!
;-)
【问题讨论】:
我正在尝试对一个项目进行去mavenize。
有没有办法将这个 maven 项目所需的所有 jar 提取到一个文件夹中?
(我是 maven 的新手,所以请;提供的说明应该是虚拟模式)谢谢!
;-)
【问题讨论】:
您可以使用maven dependency plugin 的dependency:copy-dependencies 目标来实现此目的。
实际上,只需在您的 maven 项目上运行 mvn dependency:dependencies,您应该会在 target 文件夹下找到一个 dependencies 子文件夹,其中包含所有依赖项,包括传递的依赖项。
【讨论】:
maven-dependency-plugin 仍然使用旧的(来自 Maven 2)。因此,在使用插件时,您不确定分辨率是否是真实的。而且,事实上,我在将项目从 Maven 2 切换到 3 时也因为这个问题而遇到了一些问题,所以这不仅仅是假设的情况。
查看maven-assembly-plugin 及其jar-with-dependencies 预定义描述符:
http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html#jar-with-dependencies
您可以通过稍微修改它来轻松创建自己的描述符。只需设置<unpack>false</unpack> 和<outputDirectory>/some-dir</outputDirectory>。
如果你到目前为止还没有使用过这个插件,请阅读:
http://maven.apache.org/plugins/maven-assembly-plugin/usage.html
了解那里的实际情况以及如何使用它。
【讨论】:
这不是 Maven 的工作方式。 Maven 具有以下先决条件:
所以也许应该可以生成例如一个 WAR 文件,它将包含“所有需要的 JAR 文件”。
Maven 不仅管理运行时所需的 JAR,还管理运行 Maven 所需的插件,以及 Maven 过程中所需的所有 JAR(如单元测试、覆盖率、质量检查等)。
也许你应该让你的问题更具体一些,我也会更新我的答案。
【讨论】:
C:/TEMP/jars 中的 jar 比实际需要的要多得多。例如,你有很多基本 Maven 插件需要的东西(比如编译器本身)。但是,它可能有效,因为所有需要的罐子都在那里。