Как запретить 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

person lili    schedule 13.11.2015    source источник
comment
Не могли бы вы опубликовать свой файл POM? Maven не должен перезаписывать ресурсы, если они не изменились.   -  person Tunaki    schedule 13.11.2015
comment
Вы решили эту проблему? Я страдаю от той же проблемы. Плагин ресурсов maven всегда копирует мой src/main/resources/application.properties. перезаписать=ложь не сработало. Это приводит к созданию нового файла jar снова, поэтому создается новый образ докера, и поэтому служба докеров должна извлекать новый образ, даже если изменений нет...   -  person gypark    schedule 17.04.2018


Ответы (2)


Используйте свойство -Dmaven.resources.overwrite=false в команде Maven. См. параметр overwrite цели resources:resources.

Однако в документации упоминается, что это поведение по умолчанию, поэтому проверьте, установлено ли для этого параметра значение true где-то в конфигурации вашего проекта.

ИЗМЕНИТЬ:

Как упоминалось в комментариях, кажется, что хотя в журнале указано копирование, на самом деле файлы не изменяются (временные метки остаются прежними, когда maven.resources.overwrite является ложным).

person M A    schedule 13.11.2015
comment
спасибо, я попытался установить свойство maven, но не повезло. Это то, что ты имеешь в виду? ‹properties› ‹maven.resources.overwrite›false‹/maven.resources.overwrite› ‹/properties› - person lili; 14.11.2015
comment
@lili Да, вы можете сделать это или просто -Dmaven.resources.overwrite=false через командную строку. Вы проверили, действительно ли файл был изменен (с более новой отметкой времени последнего изменения)? Возможно, вывод отладки здесь не имеет значения. - person M A; 14.11.2015
comment
это интересная идея. как я могу увидеть, копирует ли он файл или просто записывает журнал? Если я удалю один из файлов, он снова появится в целевой папке - person lili; 14.11.2015
comment
@lili Не удаляйте файл: конечно, в этом случае он снова скопирует его. Просто сохраните его и посмотрите при втором запуске, изменилось ли время последнего изменения файла. Используйте команду dir в Windows или ll в Unix. - person M A; 14.11.2015
comment
дата последнего изменения не меняется, потому что файл копируется (его не трогают) - person lili; 14.11.2015
comment
@lili Неправда. Вы пытались переключить свойство на true, чтобы увидеть разницу в отметке времени? - person M A; 14.11.2015
comment
извините, вы правы. изменение флага на true обновляет отметку времени - person lili; 14.11.2015
comment
@manouti Спасибо! Хотя ответ устарел, вы можете изменить его, чтобы он содержал информацию из ваших комментариев. Особенно тот момент, что файлы на самом деле не копируются, даже если в плагине указано Копирование X ресурсов. - person tomorrow; 18.10.2018

Имейте в виду:

maven-resources-plugin игнорирует флаг overwrite, если активированы ресурсы filtering.

person Sven Döring    schedule 16.05.2019