Sharing src/test classes between modules in a multi-module maven project

前端 未结 2 1362
醉酒成梦
醉酒成梦 2020-12-02 07:34

I have a multi-module Maven project. For the sake of this example, consider two modules:

  • data
  • consumer

Modul

相关标签:
2条回答
  • 2020-12-02 07:55

    So the problem is that (some) tests in the data module depend on the SampleDataHelper class? You can move the SampleDataHelper class to src/main of the data-test module, if you at the same time move the tests (that depend on the specific class) to the src/test of the data-test module. Consequently, there would be no more circular dependencies.

    0 讨论(0)
  • 2020-12-02 08:14

    Your Consumer project depends upon your Data project, therefore we are happy that Data must be built prior to Consumer. As a result, using the techniques suggested in the comments, I would ensure your Data project contains all the test code that you wish to share and configure the POM to produce a test JAR:

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

    Your Consumer project would then depend upon both the normal Data JAR artifact, plus the additional test-jar artifact, with test scope of course:

    <dependency>
      <groupId>com.foo</groupId>
      <artifactId>data</artifactId>
      <version>1.0</version>
      <type>test-jar</type>
      <scope>test</scope>
    </dependency>
    

    I've used this approach on many occasions and it works well.

    0 讨论(0)
提交回复
热议问题