我正面临一种情况,我认为 Maven 为我提供了正确的工具。要么我错了,要么 Maven ;o)
严重地。
我们正在编写与第 3 方库一起使用的软件,我们称之为 prod.jar。这个库需要一个可以连接到 prod.jar 服务器的环境。显然,我们的 Jenkins 不是也不能这样设置。因此,当使用 prod.jar 运行测试时,一切都会失败,因为无法建立连接。
我的想法是编写一个类似于真正的 prod.jar 并且可以用于单元测试的模拟器,称为simulator.jar。prod.jar 和simulator.jar 都包含具有相同类名的相同包。它们只是在功能上有所不同。我已经这样做了,以支持开发并在 Jenkins 的 JUnit 方面进行尽可能多的覆盖。当然,我们也针对 prod.jar 进行测试,但不是针对 Jenkins。
所以我所做的是创建两个eclipse项目:
- prod-code:带有一个 pom.xml,它具有 prod.jar 作为依赖项
- 模拟器代码:带有一个 pom.xml,该 pom.xml 具有simulator.jar 作为依赖项
因此,根据您作为依赖项添加到主项目的项目,使用模拟器或产品代码。这很好用。
但随后我们得到构建包含错误 jar 的错误。
如果可能的话,我如何设置 maven,以便我可以始终使用相同的 pom,但可能使用不同的 mvn 参数,在测试过程中使用模拟器并在构建过程中使用产品代码。
我尝试使用 Maven 配置文件,但是在使用构建 jar 时,它会抱怨。
<profiles>
<profile>
<id>simulator</id>
<dependencies>
<dependency>
<groupId>main-project</groupId>
<artifactId>simulator</artifactId>
</dependency>
</dependencies>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>jenkins</id>
<dependency>
<groupId>main-project</groupId>
<artifactId>simulator</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>main-project/groupId>
<artifactId>prod</artifactId>
</dependency>
</dependencies>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
<profile>
<id>realSystem</id>
<dependencies>
<dependency>
<groupId>main-project</groupId>
<artifactId>prod</artifactId>
</dependency>
</dependencies>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
</profile>
</profiles>
任何帮助表示赞赏。
提前谢谢了。