Arc*_*rch 5 java maven jenkins
我有一个 Maven POM 项目,其中包含许多模块。
其中之一是其他一些模块使用的 REST Web 服务。该模块是一个独立的可执行文件。
我想要实现的是让 Web 服务在所有其他模块之前构建和运行。
我知道,只需更改 pom 文件中模块的顺序,我就可以在其他模块之前构建该模块,但是如何在构建其余模块之前运行它?
我需要运行它,以便可以执行其余模块中包含的一系列测试。
我尝试实现这种功能的原因是因为我最终想要做的是在 Jenkins 上正确构建和测试项目。
我知道,只需更改 pom 文件中模块的顺序,我就可以在其他模块之前构建该模块,但是如何在构建其余模块之前运行它?
模块的排序不一定会按照该顺序构建它们。如果一个模块依赖于另一个模块,那么你必须<dependency>在依赖项目的 pom 中处理它。要回答您的问题,请首先构建 REST 服务模块并将其部署到您的服务器/容器。在多模块项目中,运行类似命令将在所有模块上mvn somegoal运行。somegoal
要在模块上运行不同的目标,请尝试分两步
mvn -pl module1 somegoal
mvn -pl module2 someothergoal
在您的项目中,它们将采用以下形式,
mvn -pl RESTModule deploy后跟常用的 mvn 命令来运行其他模块的测试。也请记住这些的 -pl 选项。
编辑:查看您评论中的要求后,我尝试了另一种解决方案。可能也适合你。将 maven-deploy-plugin 添加到 REST Module 的 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>
Run Code Online (Sandbox Code Playgroud)
并使用 jenkins 中的父 pom 运行项目。
| 归档时间: |
|
| 查看次数: |
2027 次 |
| 最近记录: |