在Maven中执行依赖工件的JAR

时间:2013-07-17 20:40:09

标签: maven maven-plugin executable-jar exec-maven-plugin

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

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

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

$ # 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坐标
  2. 执行JAR工件
  3. 将包含工件'JAR的目录放在路径上(所以我可以在命令行参数中包含JAR)
  4. 我已经看过依赖:复制目标尝试将所有JAR首先复制到一个公共路径,但似乎没有必要,因为jar已经构建为项目的一部分。 (我也不确定哪个目录会成为最好的复制目的地。)

0 个答案:

没有答案