2

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

  1. 下载所有依赖项
  2. 将 jars 添加到类路径
  3. 执行 java 代码(从 jar 中加载)

是否可以?任何实现上述#1的示例代码将不胜感激

4

2 回答 2

4

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

于 2012-08-06T20:08:32.963 回答
0

如果您绝对必须在 Java 应用程序中执行此操作:

Maven 用于进行依赖解析的库称为 Aether。如果您查看 Sonatype 站点上的文档,这里有一个如何执行步骤 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 来完成这项工作,这并不总是很方便。

于 2012-08-07T15:01:15.333 回答