用于从pom.xml下载依赖项的API

时间:2012-08-06 20:00:32

标签: java maven

我正在尝试编写一个java程序,它将maven pom.xml文件作为输入并执行以下操作:

  1. 下载所有依赖项
  2. 将jar添加到classpath
  3. 执行java代码(从jar中加载)
  4. 有可能吗?任何实现#1的示例代码都将非常感谢

2 个答案:

答案 0 :(得分:4)

您的要求正是Maven Exec plugin已经完成的要求。

答案 1 :(得分:0)

如果你必须在Java应用程序中嵌入这个:

Maven使用的库来做依赖性解析称为Aether。如果您查看Sonatype站点上的documentation,可以使用如何执行步骤1的示例。部分依赖项解析过程将允许您访问依赖项列表,然后您可以循环以构建类路径。

对于第3步,您可以使用ProcessBuilder并将目标Java应用程序作为使用Aether构建类路径的JVM的子进程启动。

如果您可以使用shell脚本:

您可以使用mvn dependency:get -Dartifact=[group]:[artifact]:[version]将工件下载到本地仓库。

然后您可以使用mvn dependency:build-classpath生成类路径字符串。

然后您可以使用-cp选项简单地执行java。您还必须知道您想要的主类,或者您可以从工件和版本号计算主jar的名称,并将其传递给-jar。

如果您能够在部署环境中获取主项目的pom.xml:

您可以使用mvn exec:java -DmainClass=com.company.package.YourMainClass。这个选项是迄今为止最简单的选项,但它确实具有在maven JVM中执行的缺点,并且据我所知,没有选择分支单独的进程。此外,你需要一个完整的pom来完成这项工作并不总是方便。