I have a multi-module Maven project. For the sake of this example, consider two modules:
dataconsumer
Module consumer has module data as a dependency.
Module data declares a bunch of core classes. There are tests under src/test that use them. These tests require some long-winded object creation, so I have a class with some utility methods in it to create these objects. This utility class (SampleDataHelper) is in the src/test hierarchy.
I also have some tests in the consumer module that need to create some of these long-winded objects. I want to use my SampleDataHelper class (defined in data src/test) in tests that reside in my consumer src/test tree. Unfortunately, even though data is a dependency of consumer, consumer can't see the classes that exist under data src/test.
To combat this, I thought I might create another module (data-test), and move SampleDataHelper to it under src/main. Then I would include data-test as a test scope dependency of data. Unfortunately, this introduces a circular dependency: data uses data-test, but data-test also requires data.
The only solution I've come up with is to place SampleDataHelper under data src/main under a test package and hope that no real application code ever calls it.
How can I share my SampleDataHelper class between modules without putting it under src/main?
data) before I can even compile my second module (consumer).mvn package, but it should work just fine in a single step build when you usemvn installormvn deploy. Just a quick note. In one of our large projects we have a wrapper over junit'sTestBaseand it's located insrc/mainwhich I don't consider to be a good idea either.