user1076802
user1076802

Reputation: 317

Maven Surefire: Running tests in specified dependencies

I have a project that includes multiple other jar artifacts as dependencies. I'm using the surefire plugin's dependenciesToScan property to run tests in the said artifacts as follows:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.18.1</version>
      <configuration>
        <dependenciesToScan>
          <dependency>com.example.tests:project-a</dependency>
          <dependency>com.example.tests:project-b</dependency>
        </dependenciesToScan>
      </configuration>
    </plugin>
  </plugins>
</build>

<dependencies>
  <dependency>
    <groupId>com.example.tests</groupId>
    <artifactId>project-a</artifactId>
  </dependency>
  <dependency>
    <groupId>com.example.tests</groupId>
    <artifactId>project-b</artifactId>
  </dependency>
</dependencies>

Ideally, I would like to be able to do the following:

Is this possible at all or is there another way to approach this?

Upvotes: 1

Views: 2987

Answers (1)

user180100
user180100

Reputation:

You can use profiles to have two distinct builds.

<profiles>
  <profile>
    <id>project-a</id>
    <build>
      <plugins>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.18.1</version>
          <configuration>
            <dependenciesToScan>
              <dependency>com.example.tests:project-a</dependency>
            </dependenciesToScan>
          </configuration>
        </plugin>
     </plugins>
   </build>
  </profile>
  <profile>
    <id>project-b</id>
    <build>
      <plugins>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.18.1</version>
          <configuration>
            <dependenciesToScan>
              <dependency>com.example.tests:project-b</dependency>
            </dependenciesToScan>
          </configuration>
        </plugin>
     </plugins>
   </build>
  </profile>
</profiles>

The use mvn clean test -P project-a or mvn clean test -P project-b You could also set different properties in each profiles and have a centralized surefire config.


Or you could use a property:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>2.18.1</version>
      <configuration>
        <dependenciesToScan>
          <dependency>${someProperty}</dependency>
        </dependenciesToScan>
      </configuration>
    </plugin>
  </plugins>
</build>

The use mvn clean test -DsomeProperty=project-a

Upvotes: 3

Related Questions