如何阻止 Maven 覆盖资源文件

lil*_*ili 6 java incremental-build maven

我有默认的 Maven 结构:

main
--java
--resources
--webapp
Run Code Online (Sandbox Code Playgroud)

我看到每个都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>
Run Code Online (Sandbox Code Playgroud)

这是调试模式下的输出:

[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
Run Code Online (Sandbox Code Playgroud)

man*_*uti 4

-Dmaven.resources.overwrite=false使用Maven 命令上的属性。查看目标overwrite的参数resources:resources

然而,文档提到这是默认行为,因此请检查该参数是否在项目配置中的某处设置为 true。

编辑:

正如评论中提到的,似乎即使日志指示复制,实际上文件也没有被更改(当为maven.resources.overwritefalse 时时间戳保持不变)。

  • @lili是的,你可以通过命令行执行此操作或仅使用“-Dmaven.resources.overwrite=false”。您是否检查过文件是否确实被修改(使用较新的上次修改时间戳)?也许调试输出在这里并不重要。 (2认同)