独立的maven测试项目,与其他两个项目运行

独立的maven测试项目,与其他两个项目运行,maven,Maven,我有一个分为两个项目的项目。最初的项目,我们称之为project-java6,还有一个新项目,我们称之为project-java8。我需要发布两个工件,一个用于Java6/7用户,一个用于Java8用户 这两个项目是“相同”的,因为Project-java6只是简单地复制到Project-java8,Project-java8中的代码实现了现代化(正如预期的那样,使用了java8构造)。目前,两个项目都有相同的单元测试。Project-java6和Project-java8的“API”是相同的,

我有一个分为两个项目的项目。最初的项目,我们称之为project-java6,还有一个新项目,我们称之为project-java8。我需要发布两个工件,一个用于Java6/7用户,一个用于Java8用户

这两个项目是“相同”的,因为Project-java6只是简单地复制到Project-java8,Project-java8中的代码实现了现代化(正如预期的那样,使用了java8构造)。目前,两个项目都有相同的单元测试。Project-java6和Project-java8的“API”是相同的,所以我想把单元测试分开,这样我就不会在两个地方不断更新相同的代码了(这在两个项目中已经足够多了)

因此,我想要如下结构:


Project-java6
Project-java8
测验


其中测试是一个“独立”的maven项目。我的挑战(以及这个问题)是:如何让测试同时针对Project-java6和Project-java8运行?也就是说,当构建父pom时,所有三个项目都被构建,测试分别针对Project-java6和Project-java8运行。

我希望这能帮助您

您可以在测试模块中创建一个抽象测试,您将在其中编写主要测试用例。此测试将使用测试中第一个模块中定义的接口

然后,在每个模块Project-java6和Project-java8中,创建一个扩展抽象测试的测试,并调用测试模块中定义的测试方法

关于Maven:

在测试模块中,您必须向Maven指示他必须创建测试包的jar:

<build>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3</version>
        <executions>
            <execution>
                <goals>
                    <goal>test-jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

org.apache.maven.plugins
maven jar插件
2.3
试验罐
然后,在每个实现模块中,您必须指出您对这个测试jar库有依赖关系:

<dependency>
    <groupId>foo</groupId>
    <artifactId>bar</artifactId>
    <version>${pom.version}</version>
    <type>test-jar</type>
    <scope>test</scope>
</dependency>

福
酒吧
${pom.version}
试验罐
测试
我刚刚在另一篇帖子上读到了这封信,它似乎对你有好处


如果一切都清楚,请告诉我……

很清楚,但这也需要相当多的技巧才能实现目标。在java6和java8模块中可能包含许多“测试”,它们扩展了测试模块中定义的抽象测试。在蚂蚁看来,这是微不足道的;也许我应该在ant中完成,然后从maven调用它。