我有一个包含许多模块的Maven POM项目。
其中一个是其他一些模块使用的REST Web服务。 该模块是独立的可执行文件。
我想要实现的是在所有其他模块之前构建并运行Web服务。
据我所知,只需更改pom文件中模块的顺序,我就可以让模块在其他模块之前构建,但是如何在构建其余部分之前运行它? < / p>
我需要运行它,以便我可以执行其余模块中包含的一系列测试。
我试图实现这种功能的原因是因为我最终想要做的是在Jenkins上正确构建和测试项目。
答案 0 :(得分:1)
据我所知,只是通过更改pom文件中模块的顺序,我可以让模块在其他模块之前构建,但是如何在构建其余模块之前运行它?
模块的排序不一定按顺序构建它们。如果一个模块依赖于另一个模块,则必须通过依赖项目的pom中的<dependency>
来处理它。
要回答您的问题,请首先构建REST服务模块并将其部署到您的服务器/容器中。在多模块项目中,运行mvn somegoal
之类的命令将在所有模块上运行somegoal
。
要在模块上运行不同的目标,请尝试两个步骤
mvn -pl module1 somegoal
mvn -pl module2 someothergoal
在您的项目中,他们将采取的形式
mvn -pl RESTModule deploy
紧随其后
mvn命令用于运行其他模块的测试。请记住这些的-pl选项。
修改:在查看评论中的要求后,我尝试了另外一个解决方案。也可能适合你。将maven-deploy-plugin添加到REST模块的pom中并将其绑定到一个阶段,以便只有RESTModule项目部署工件而不是其他工件(因为他们的pom中没有这样的插件)。要添加的代码段。
`
<project>
<build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<executions>
<execution>
<id>MyProjId</id>
<phase>package</phase>
<goals>
<goal>deploy</goal>
</goals>
</execution>
</executions>
</plugin>
</build>
<distributionManagement>
<repository>
<id>my-repository</id>
<url>http://path/to/your/repo</url>
</repository>
</distributionManagement>
</project>
使用jenkins中的父pom运行项目。