Почему плагин maven-resources-plugin копирует файлы несколько раз (appfuse-basic-spring-archetype v2.1.0) - PullRequest
2 голосов
/ 20 марта 2012

При успешном запуске >mvn package в проекте appfuse-basic-spring-archetype v2.1.0 вывод консоли выводит:

[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ ScanillionAppTier02 ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 20 resources
[INFO] Copying 16 resources
[INFO] Copying 16 resources
[INFO] Copying 16 resources

Я обращаю ваше внимание на последние 3 строки (Копирование 16 ...). Я запустил >mvn -X package, чтобы получить вывод DEBUG, который показывает, что плагин ресурсов утверждает, что сначала фильтрует 16 файлов, а затем копирует их дважды.

Еще больше копий происходит в разветвленном hibernate3-maven-plugin: часть сборки hbm2ddl; в этом разделе вывод показывает, что 16 файлов фильтруются один раз и копируются 4 раза.

Опять же, сборка работает, так что я мог (должен был?) Пересчитать мои благословения, отвратить глаза и продолжить мой проект. Увы, я спустился в эту крысиную нору, и она будет беспокоить меня, пока я не получу ответ. Помоги парню поспать. : -)

РЕДАКТИРОВАТЬ 19.03.2012 cdhabecker: более подробно

В выводе maven с параметром -X я нашел это:

[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-resources-plugin:2.5:resources' with basic configurator -->
[DEBUG]   (f) buildFilters = []
[DEBUG]   (f) encoding = UTF-8
[DEBUG]   (f) escapeWindowsPaths = true
[DEBUG]   (s) includeEmptyDirs = false
[DEBUG]   (s) outputDirectory = C:\eclipse\workspace\foo\target\classes
[DEBUG]   (s) overwrite = false
[DEBUG]   (f) project = MavenProject: com.foo:foo:0.0.1-SNAPSHOT @ C:\eclipse\workspace\foo\pom.xml
[LOOK]   (s) resources = [Resource {targetPath: null, filtering: true, FileSet {directory: C:\eclipse\workspace\foo\src\main\resources, PatternSet [includes: {}, excludes: {ApplicationResources*.properties}]}}, 
[LOOK]                    Resource {targetPath: null, filtering: true, FileSet {directory: C:\eclipse\workspace\foo\target\resources, PatternSet [includes: {}, excludes: {}]}}, 
[LOOK]                    Resource {targetPath: null, filtering: false, FileSet {directory: C:\eclipse\workspace\foo\target\resources, PatternSet [includes: {}, excludes: {}]}}, 
[LOOK]                    Resource {targetPath: null, filtering: false, FileSet {directory: C:\eclipse\workspace\foo\target\resources, PatternSet [includes: {}, excludes: {}]}}]
[DEBUG]   (f) session = org.apache.maven.execution.MavenSession@eddac
[DEBUG]   (f) supportMultiLineFiltering = false
[DEBUG]   (f) useBuildFilters = true
[DEBUG]   (s) useDefaultDelimiters = true
[DEBUG] -- end configuration --

Если вы посмотрите на строки, помеченные [LOOK], вы увидите, что maven-resources считает, что у него есть 4 задачи (фильтр из 20 файлов, фильтр из 16 файлов и 2 избыточные копии этих 16 файлов). ).

Так что теперь я подозреваю, что что-то (например, native2ascii-maven-plugin или другие плагины или генератор плана сборки maven) регистрирует эти задачи с помощью maven-resources-plugin и что ничто в системе не мешает заметить, что некоторые из эти задачи являются избыточными.

...