我正在尝试编写一个java程序,它将maven pom.xml文件作为输入并执行以下操作:
有可能吗?任何实现#1的示例代码都将非常感谢
答案 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来完成这项工作并不总是方便。