2015-11-13 94 views
2

我有默认的Maven结构停止Maven的:如何从覆盖资源文件

main 
--java 
--resources 
--webapp 

我看到每一个mvn compile副本资源,即使他们没有改变。 我应该怎么做才能使构建副本只更改文件?

<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> 

这里是在调试模式下输出:

[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 
+0

你能张贴您的POM文件?如果Maven没有改变,它不应该覆盖资源。 – Tunaki

回答

2

使用的Maven的命令财产-Dmaven.resources.overwrite=false。请参阅resources:resources目标的overwrite参数。

但是文档中提到这是默认的行为,因此检查,如果该参数在您的项目配置设置为true的地方。

+0

谢谢,我试着设置一个maven属性,没有运气。你是这个意思吗? false lili

+1

@lili是的,您可以通过命令行执行此操作或仅执行-Dmaven.resources.overwrite = false。你有没有检查文件是否被实际修改(使用更新的最后修改时间戳)?也许调试输出在这里不重要。 – manouti

+0

这是一个有趣的想法。我怎么看它是复制文件还是只写日志?如果我删除其中一个文件,它会再次出现在目标文件夹中 – lili