У меня есть папка SVN externals, которая содержит много папок с именем *Plugin
, затем в каждой из этих папок есть папка modules
и папка binaries
.
Проблема для меня заключается в том, что в рамках моей задачи сборки я хочу скопировать **/*
из модулей в папку в моем проекте, а также любые *.plugin.dll
из расположения двоичных файлов в другое место моего проекта.
Итак, вот фиктивный пример:
- DummyPlugin1
|- binaries
|- some.assembly.dll
|- some.plugin.dll
|- modules
|- some-named-folder
|- some-sub-folder
|- some.content.xml
|- some-other-sub-folder
|- yet-another-folder
|- some.more.content.jpg
- DummyPlugin2
|- binaries
|- some.other.plugin.dll
|- modules
|- another-named-folder
|- content.xml
|- image.jpg
|- yet-another-named-folder
|- some-web-page.html
Так что в этом примере я бы хотел скопировать:
- some.plugin.dll
- some.other.plugin.dll
В заданный выходной каталог, затем из каталога модулей я хотел бы взять:
- some-named-folder (и все содержимое)
- another-named-folder (и все содержимое)
- but-another-named-folder (и все содержимое)
и поместите все это в другой заданный выходной каталог.
Я пытался сделать это:
<copy todir="${dir.projects.dynamic.binaries}">
<fileset basedir="${dir.plugins}/**/binaries">
<include name="*.plugin.dll" />
</fileset>
</copy>
<copy todir="${dir.projects.dynamic.modules}">
<fileset basedir="${dir.plugins}/**/modules">
<include name="**/*" />
</fileset>
</copy>
Тем не менее, я получаю сообщение об ошибке, в котором говорится, что в зависимости от набора файлов не может быть ** или любых других недействительных символов. Документация кажется немного расплывчатой относительно того, можете ли вы или не можете использовать шаблоны в основе вашего набора файлов, или нет, однако я предполагаю, что после этой ошибки я не могу.
Проблема в том, что если бы я сделал это вместо этого:
<copy todir="${dir.projects.dynamic.binaries}">
<fileset basedir="${dir.plugins}">
<include name="**/binaries/*.plugin.dll" />
</fileset>
</copy>
<copy todir="${dir.projects.dynamic.modules}">
<fileset basedir="${dir.plugins}">
<include name="**/modules/**/*" />
</fileset>
</copy>
Однако он копирует родительские папки, то есть DummyPlugin1/binaries/some.assembly.dll
, DummyPlugin2/binaries/some.other.plugin.dll
, а не просто dll, который я хочу. То же самое с модулями ...
Я знаю, что мог бы изменить basedir, чтобы включить DummyPlugin1 / binaries, DummyPlugin2 / binaries, но я не знаю, сколько там будет папок или как их имена, не меняя сценарий сборки постоянно, поэтому я бы предпочел оставить его динамический, поэтому он будет просто извлекать все плагины и модули для меня, а не для меня, чтобы сделать копию для КАЖДОЙ папки плагинов, которая может быть или не быть там.
Так есть ли для меня способ съесть свой пирог и съесть его здесь?