Issue
I have the default maven structure:
main
--java
--resources
--webapp
I see that every mvn compile
copies resources even though they were not changed.
What should I do to make build copy only changed files?
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
...
</dependencies>
<properties>
<maven.resources.overwrite>false</maven.resources.overwrite>
</properties>
Here is the output in debug mode:
[INFO] Using 'cp1252' encoding to copy filtered resources.
[DEBUG] resource with targetPath null
directory C:\core\src\main\resources
excludes []
includes []
[DEBUG] ignoreDelta true
[INFO] Copying 190 resources
[DEBUG] file batch.bat has a filtered file extension
[DEBUG] copy C:\core\src\main\resources\batch.bat to C:\core\target\classes\batch.bat
[DEBUG] file DataObject.hbm.xml has a filtered file extension
[DEBUG] copy C:\core\src\main\resources\com\data\DataObject.hbm.xml to C:\core\target\classes\com\data\DataObject.hbm.xml
Solution
Use the property -Dmaven.resources.overwrite=false
on the Maven command. See the overwrite
parameter of the resources:resources
goal.
However the documentation mentions this is the default behavior so check if this parameter is set to true somewhere in your project configuration.
EDIT:
As mentioned in the comments, it seems that even though the log indicates copying, in fact the files are not being changed (the timestamps remain the same when maven.resources.overwrite
is false).
Answered By - M A
Answer Checked By - Terry (JavaFixing Volunteer)