我正在使用mvn assembly:assembly构建一个项目 A ,它为我提供了一个带有依赖项的jar文件。该项目基本上获取文件路径并将其转换为XML。
现在我需要创建一个新项目 B ,它将通过遍历目录并多次调用 A 来包装 A 。 注意:它们必须是不同的应用程序。我无法修改 A 更改其参数。
我希望当 B 构建时,它将首先构建 A 并获取它的jar文件。
哪个是在pom文件中配置它的最佳方法?我应该有两个poms吗? 同样的pom,但正在建造两个罐子?
感谢阅读!
答案 0 :(得分:5)
我会通过添加A和B的聚合器POM modules来处理这个问题。然后,您只需构建聚合器,每次在B之前构建A。这使您可以灵活地单独构建A和B以及两者一起构建。
如果您决定从B中调用A的构建,可以使用maven-exec-plugin来调用另一个Maven实例。
例如:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>mvn</executable>
<!--specified as a property below-->
<workingDirectory>${projectA.path}</workingDirectory>
<arguments>
<argument>clean</argument>
<argument>install</argument>
</arguments>
</configuration>
</plugin>
...
<properties>
<projectA.path>/path/to/project/a</projectA.path>
</properties>