1

我正面临一种情况,我认为 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>

任何帮助表示赞赏。

提前谢谢了。

4

0 回答 0