Рассмотрим следующую структуру каталогов:
src/main/resources/
resource1.properties
subdir/
resource2.properties
Мне нужно resource2.properties
(и его братья и сестры), чтобы пройти Maven-фильтрацию , но скорее исключить все другие ресурсы из фильтрации.
Это безопасность: другие файлы свойств могут содержать ${xxx}
токенов, которые не должны заменяться.Мне нужно сохранить структуру каталогов исходного кода на target
.
. В конце концов, я обнаружил, что единственный способ добиться этого (таким образом, чтобы не нарушать * 1013 maven-eclipse-plugin *)*) кажется:
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>subdir/**</exclude>
</excludes>
</resource>
<resource>
<!-- 'subdir' resources need placeholder substitution (ie: "filtering") -->
<directory>src/main/resources/subdir</directory>
<targetPath>${project.build.outputDirectory}/subdir</targetPath>
<filtering>true</filtering>
</resource>
</resources>
Вы могли бы сказать, что это извилистый и потенциально хрупкий.При этом используется Maven 2.2.1 с maven-eclipse-plugin v2.8 (последняя версия).
В других, чуть менее запутанных версиях вышеупомянутых возникли проблемы с maven-eclipse-plugin, который жалуется на что-то подобноеto:
[INFO] Request to merge when 'filtering' is not identical. Original=resource src/main/resources: output=target/classes, include=[], exclude=[subdir/**|**/*.java], test=false, filtering=false, merging with=resource src/main/resources: output=target/classes, include=[subdir/**], exclude=[**/*.java], test=false, filtering=true
Это напоминает этот старый поток : упомянутый обходной путь работает (понижение до v2.6 из maven-eclipse-plugin), но это должнобольше не требуется, потому что связанные ошибки помечены как исправленные?
Это не похоже на слишком далеко зашедший случай использования, но я изо всех сил ...