2010-03-15 3 views
7

У меня есть существующий файл pom, который включает раздел maven-jar-plugin. Она работает на тест-банке цели и в настоящее время за исключением нескольких каталогов:maven-jar-plugin включает vs исключает

<excludes> 
    <exclude>...</exclude> 
    <exclude>...</exclude> 
    <exclude>somedir/**</exclude> 
</excludes> 

Мне нужно включить файл в каталоге somedir но оставить остальную часть файлов в каталоге somedir. Я читал, что включает в себя иметь приоритет над исключает, поэтому я добавил что-то вроде следующего (там не было до того включает в себя раздел):

<includes> 
    <include>somedir/somefile.xml</include> 
</includes> 

Это заканчивает создание файла баночку для тестирования только несколько файлов в нем (просто материал в META-INF). Файл, который я включил, также не находится в банке. То, что я ожидаю, представляет собой банку, которая идентична банке, которая была создана до того, как мой включит изменение с одним дополнительным файлом.

Что мне здесь не хватает?

ответ

10

Во-первых, если вы не укажете includes, то специалист банка плагин будет использовать **/** как шаблон по умолчанию (см o.a.m.p.j.AbstractJarMojo), то есть она будет включать в себя все. Если вы переопределите этот шаблон по умолчанию, плагин, очевидно, будет включать только то, что вы ему скажете.

Во-вторых, сканирование каталога производится в конце по o.c.p.u.DirectoryScanner и это то, что Javadoc класса говорит:

 
* The idea is simple. A given directory is recursively scanned for all files 
* and directories. Each file/directory is matched against a set of selectors, 
* including special support for matching against filenames with include and 
* and exclude patterns. Only files/directories which match at least one 
* pattern of the include pattern list or other file selector, and don't match 
* any pattern of the exclude pattern list or fail to match against a required 
* selector will be placed in the list of files/directories found. 

Таким образом, с текущим набором includes и excludes узоров, только ONE Файл будет соответствовать шаблону включения, но также будет соответствовать шаблону исключения и, следовательно, не будет выбран, и вы получите почти пустой архив (только с манифестом по умолчанию, см. o.a.m.p.j.AbstractJarMojo#createArchive()).

Я не могу дать вам точное решение здесь, но вам явно нужно переосмыслить то, как вы включить/исключить файлы (например, добавить больше includes шаблоны, удалить <exclude>somedir/**</exclude> или использовать includes только, или использовать excludes только).

Смежные вопросы