Maven子模块相互取决于彼此



当前我有一个单个模块,该模块既具有集成测试和单元测试。我正在尝试将其分为两个项目,因此单位测试保留在主代码库中,并为集成测试提供了单独的模块。

因此,我创建了一个新的子模块(模块B),该模块取决于第一个子模块(模块A),因此集成测试可以访问SRC代码。

我遇到的问题是单位测试和集成测试都使用了一些UTIL断言类(例如自定义Hamcrest断言)。这些UTIT断言不应生活在模块A的SRC代码中,但我不认为它们也应该在模块中AT test目录。

因此,它指向了所有这些自定义主张的另一个项目。那是非常混乱的...有人知道这条路吗?

我的想法是让模块b具有包含所有自定义断言类的SRC目录,该类别可以作为模块A导入的所有自定义断言类(但这会导致环状依赖性错误)。

你对事情变得凌乱。这是可维护性的敌人。

我要做的是在模块A中的src/test/java中维护自定义的Hamcrest主张和匹配器,然后添加Maven-Jar-Plugin的次级执行,以创建test-jar Artifact:

        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                    <configuration>
                        <includes>
                            <include>au/com/mycompany/serialization/**.class</include>
                            <include>**/AddressMatcher.class</include>
                            <include>**/AddressAssertion.class</include>
                        </includes>
                    </configuration>
                </execution>
            </executions>
        </plugin>

然后将此罐子添加为模块B中的依赖关系:

    <dependency>
        <groupId>au.com.mycompany.myapp</groupId>
        <artifactId>A</artifactId>
        <type>test-jar</type>
        <scope>test</scope>
    </dependency>

您以这种方式最小化复杂性并提高可维护性。

最新更新