У меня есть папка с внешними файлами SVN, которая содержит много папок под названием *Plugin
, а затем в каждой из этих папок находится папка modules
и binaries
.Nant fileset basedir с рисунком
Проблема для меня - в рамках моей задачи построения я хочу скопировать **/*
из модулей в место в моем проекте, а также любое *.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
Для данного выходного каталога, затем из каталога модулей, который я хотел бы взять:
- некоторого название папка (и все содержание)
- другого названия-папка (и все содержание)
- еще-другое название папки (и все содержимое)
и поместить все это в другой заданный каталог.
Я пытался сделать это:
<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>
Однако я получаю сообщение об ошибке, говорящее мне, что BASEDIR на наборе файлов не могут содержать ** или любые другие недопустимые символы. Документация кажется немного неопределенной, если вы можете или не можете использовать шаблоны в вашем наборе файлов на основе или нет, однако я предполагаю после этой ошибки, что не могу.
Проблема заключается в том, что если бы я должен был сделать этот путь вместо:
<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
, а не просто длл, которую я хочу. То же самое с модулями ...
Я знаю, что я могу изменить исходный код, чтобы включить DummyPlugin1/binaries, DummyPlugin2/binaries, но я не знаю, сколько папок будет там или какие имена будут без постоянного изменения сборки сценарий, поэтому я бы предпочел сохранить его динамичным, поэтому он просто вытащит все плагины и модули для меня, вместо того, чтобы мне нужно сделать копию для КАЖДОЙ плагиновой папки, которая может быть или не быть там.
Итак, есть ли у меня способ иметь мой торт и есть его здесь?
проблема, я действительно необходимо сохранить структуру папок внутри модулей каталогов нетронутыми. Поскольку я копирую корневую папку и все содержимое не просто набор файлов. – Grofit
Возможно, создание отдельных наборов файлов с NAnt 'foreach' будет лучше подходит? Сначала получите набор файлов для каталогов, а затем повторите его. – skolima
Есть ли у вас пример или ссылка, чтобы показать, как это будет работать, документация Nant в наши дни немного скудна. Я собирался использовать Rake, но не хотел, чтобы была зависимость от рубина и грабли. – Grofit