【发布时间】:2015-11-06 18:12:07
【问题描述】:
想象一个普通的 java maven 项目,它有一个 Main 类来生成工件 project-a.jar。该项目依赖于project-b.jar。
是否有 Maven 插件允许通过这样的命令运行该 jar?
mvn run-plugin:run org.mygroup:project-a:3.1 <args>
插件将解析运行时依赖项(使用 META-INF/maven/(...)/pom.xml),将项目及其依赖项安装到本地 maven 存储库(如果还没有),构建类路径并调用
java -cp (...)/project-a-3.1.jar;(...)/project-b-2.1.jar org.mygroup.Main <args>
我知道通常的方法是构建一个包含依赖项的可执行(胖)jar,但这不是我想要的。
实际上,甚至不需要从 jar 中读取 pom,因为 maven 可以从给定坐标的存储库中下载它。
为什么这个问题与Maven Run Project 问题不同:
我不想从已经签出项目的源代码开始。 所以通常使用 exec 插件是不适用的。 Maven Run Project 问题的 OP 显然假设存在源代码项目文件夹。她的目的是测试,她接受了一个显然需要一个项目的答案。这两个问题的措辞也是正确的。 “project”和“jar”这两个词是有区别的,它们在各自上下文中的实际含义也大不相同。
【问题讨论】:
-
我认为您正在寻找 maven exec 插件,请参阅可能的重复项:Maven Run Project
-
META-INF/maven/(...)/pom.xml结构不保证存在。当您将maven-jar-plugin与addMavenDescriptor配置为false时,就会出现这种情况。 -
不,我认为该问题以及 exec 插件都要求您已经在该项目中(已从包含 pom 的源代码文件夹中签出源代码并执行 maven)。跨度>
-
您应该告诉我们您的大局是什么,如果您不想使用源代码树,那么我认为 maven 不是您需要的工具。您可能应该使用 MANIFEST.MF 指定 deps(请参阅此answer)
-
已经有一些插件不需要源代码树,最明显的一个就是原型插件。
标签: java maven maven-plugin