Hi,
I am new to Maven, I am working on converting the unit tests from Ant build to
Maven build. I have a basic question for surefire plugin and hope someone on
this list can help. Thanks in advance.
In Ant build xml file, we need to copy a property file to a /tmp directory
before each test, something like this:
<target name="test-properties">
<copy file="properties.data" tofile=“/tmp/properties.data" overwrite="true" />
<junit>
<test name="TestProperties"/>
</junit>
<copy file="properties.data" tofile=“/tmp/properties.data" overwrite="true" />
<junit>
<test name="TestPropertiesAgain"/>
</junit>
</target>
I am trying to use Maven to achieve this in <build><plugins> shown below. The
first test seems work fine and updated /tmp/properties.data as expected.
But the second test failed because the /tmp/properties.data is not overwritten
by maven-resources-plugin. It still has the content from the last test run.
There is a warning saying from the output of "mvn clean test":
[WARNING] 'build.plugins.plugin.(groupId:artifactId)' must be unique but found
duplicate declaration of plugin org.apache.maven.plugins:maven-resources-plugin.
Is this the cause of the file not copied? How can I handle this case in Maven?
Thanks,
-- QH
<!-- Copy config files to the work directory .-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-test-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>/tmp</outputDirectory>
<resources>
<resource>
<directory>src/test/resources</directory>
<includes>
<include>properties.data</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<forkMode>always</forkMode>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>testProperties</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<includes>
<include>**/TestProperties.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
<!-- Copy config files to the work directory 2nd time .-->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources-again</id>
<phase>process-test-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>/tmp</outputDirectory>
<resources>
<resource>
<directory>src/test/resources</directory>
<includes>
<include>properties.data</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<forkMode>always</forkMode>
<skip>true</skip>
</configuration>
<executions>
<execution>
<id>testPropertiesAgain</id>
<goals>
<goal>test</goal>
</goals>
<configuration>
<skip>false</skip>
<includes>
<include>**/TestPropertiesAgain.java</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>