1

我正在开发一个多模块 Maven 项目,如下所示:

Parent-project (pom)
+- Module1 (executable-jar)
+- Module2 (executable-jar)
+- Module3 (jar)
+- ...
+- Distribution (pom)

分发模块列出了对 Module1、Module2 和 Module3 的依赖关系。我希望分发模块测试项目并将其打包。我正在使用这个模块进行测试,因为发行版已经包含所有必要的配置文件。如果我要从命令行手动启动测试,它看起来像这样:

$ # Pre-integration-test:
$ java -Djava.rmi.server.codebase=file:module3.jar -jar module1.jar
$ java -Djava.rmi.codebase=file:module3.jar -jar module2.jar

我查看了将这些调用绑定到预集成测试阶段的exec-maven-plugin,但该插件仅包含类路径中的 JAR,而不是包含 JAR 本身的目录。我认为我将从一个可以轻松执行项目依赖项生成的 jar 的插件中受益最多。这样,我可以在 Distribution POM 中做这样的事情:

...
<plugin>
  <artifactId>some-magic-plugin</artifactId>
  <executions><execution>
    <phase>pre-integration-test</phase>
    <goals><goal>exec-dependency</goal></goals>
    <configuration>
      <artifactId>module1</artifactId>
      <vmArguments>...</vmArguments>
      <arguments>...</arguments>
    </configuration>
  </execution></executions>
</plugin>

是否已经有一个插件?理想情况下,它将能够:

  1. 给定它的 Maven 坐标执行一个 JAR 工件
  2. 将包含工件 JAR 的目录放在路径上(这样我就可以包含带有命令行参数的 JAR)

我已经查看了依赖项:复制目标,首先尝试将所有 JAR 复制到公共路径,但这似乎没有必要,因为 jar 已经作为项目的一部分构建。(我也不确定哪个目录会成为最佳复制目标)。

4

0 回答 0