Java 从pom.xml下载依赖项的API
我正在尝试编写一个java程序,该程序将maven pom.xml文件作为输入,并执行以下操作:Java 从pom.xml下载依赖项的API,java,maven,Java,Maven,我正在尝试编写一个java程序,该程序将maven pom.xml文件作为输入,并执行以下操作: 下载所有依赖项 将JAR添加到类路径 执行java代码(从JAR加载) 可能吗?任何要实现上述#1的示例代码都将受到极大的赞赏您的需求正是已经做过的。您的需求正是已经做过的。如果您必须在Java应用程序中嵌入此功能: Maven在幕后使用的用于进行依赖项解析的库称为Ether。如果您查看Sonatype站点上的,有一个如何执行步骤1的示例。依赖项解析过程的一部分将允许您访问依赖项列表,然后您可以循环
可能吗?任何要实现上述#1的示例代码都将受到极大的赞赏您的需求正是已经做过的。您的需求正是已经做过的。如果您必须在Java应用程序中嵌入此功能: Maven在幕后使用的用于进行依赖项解析的库称为Ether。如果您查看Sonatype站点上的,有一个如何执行步骤1的示例。依赖项解析过程的一部分将允许您访问依赖项列表,然后您可以循环使用该列表来构建类路径 对于步骤3,您可以使用ProcessBuilder并将目标Java应用程序作为使用Ether构建类路径的JVM的子进程启动 如果可以使用shell脚本: 您可以使用
mvn依赖项:get-Dartifact=[group]:[artifact]:[version]
将工件下载到本地repo
然后您可以使用mvn dependency:buildclasspath
生成类路径字符串
然后,您可以使用-cp选项简单地执行java。您还必须知道您想要的主类是什么,或者您可以根据工件和版本号计算主jar的名称,并将其传递给-jar
如果您能够在部署环境中获取主项目的pom.xml:
您只需使用
mvn exec:java-DmainClass=com.company.package.YourMainClass
。这个选项到目前为止是最简单的,但它确实有在maven JVM中执行的缺点,而且据我所知,没有分叉单独进程的选项。此外,您还需要有一个成熟的pom来完成这项工作,这并不总是很方便。如果您必须在Java应用程序中嵌入此功能:
Maven在幕后使用的用于进行依赖项解析的库称为Ether。如果您查看Sonatype站点上的,有一个如何执行步骤1的示例。依赖项解析过程的一部分将允许您访问依赖项列表,然后您可以循环使用该列表来构建类路径
对于步骤3,您可以使用ProcessBuilder并将目标Java应用程序作为使用Ether构建类路径的JVM的子进程启动
如果可以使用shell脚本:
您可以使用mvn依赖项:get-Dartifact=[group]:[artifact]:[version]
将工件下载到本地repo
然后您可以使用mvn dependency:buildclasspath
生成类路径字符串
然后,您可以使用-cp选项简单地执行java。您还必须知道您想要的主类是什么,或者您可以根据工件和版本号计算主jar的名称,并将其传递给-jar
如果您能够在部署环境中获取主项目的pom.xml:
您只需使用
mvn exec:java-DmainClass=com.company.package.YourMainClass
。这个选项到目前为止是最简单的,但它确实有在maven JVM中执行的缺点,而且据我所知,没有分叉单独进程的选项。此外,您还需要一个成熟的pom来完成这项工作,这并不总是很方便。这正是Maven所做的-难道不可能让mvn
为您完成这项工作吗?马上。。。您真的需要重新实现mvn吗?如果您需要在应用程序中嵌入该功能,您可以尝试包含一些Maven源代码,因为它是一个开源项目。或者,如果安装了Maven,您可以简单地在shell中调用mvn
。Maven是开源的-下载代码,看看他们是如何做到的^^^看看,这将帮助您完成步骤#1这正是Maven所做的-难道不可能让mvn
为您做到这一点吗?马上。。。您真的需要重新实现mvn吗?如果您需要在应用程序中嵌入该功能,您可以尝试包含一些Maven源代码,因为它是一个开源项目。或者,如果安装了Maven,您可以简单地在shell中调用mvn
。Maven是开源的-下载代码,看看他们是如何做到的^^^看一看,这将帮助您完成步骤#1我们的要求是利用java程序的Maven功能。如果我没有弄错的话,Mojo允许从Maven执行java。我们的要求是在java程序中利用Maven的功能。如果我没有弄错的话,Mojo允许从Maven执行java。