Лучший способ с Айви управлять многими «одинаковыми» артефактами, которые имеют только различие в архитектуре, заключается в использовании extra attributes.
Так что в вашем модуле вы провозгласите:
<publications xmlns:e="http://ant.apache.org/ivy/extra">
<artifact name="MyLib" type="jar" ext="jar" />
<artifact name="libStuff" type="native" ext="so" e:arch="armeabi" />
<artifact name="libStuff" type="native" ext="so" e:arch="armeabi-v7a" />
<artifact name="libStuff" type="native" ext="so" e:arch="mips" />
<artifact name="libStuff" type="native" ext="so" e:arch="x86" />
</publications>
недостатков является то, что вся ваша цепь вокруг Айви придется принять, что дополнительный атрибут во внимание. Например, вы должны быть в состоянии настроить хранилище, так что будет принимать пользовательский шаблон, как этот:
${repository.dir}/[organisation]/[module]/[arch]/[revision]/[artifact].[ext]
Другое решение, как вы упомянули, является работа с папкой на молнии. И это может быть хорошим временем, так как Ivy 2.4, который вот-вот будет выпущен, поддерживает ZIP-папку через packaging.
Например, вы можете объявить:
<publications xmlns:e="http://ant.apache.org/ivy/extra">
<artifact name="MyLib" type="jar" ext="jar" />
<artifact name="libStuff" type="natives" ext="zip" packaging="zip" />
</publications>
Затем Ivy загрузит libStuff-1.2.3.zip
в свой кэш и будет автоматически распаковать его в кэш для libStuff-1.2.3
, папку, в которой вы могли бы найти ваши несколько туземцев библиотек.
Большое спасибо! На самом деле мы пытаемся заполнить сервер Nexus артефактами всех наших проектов (java, C#, c, C++ ...), и в некоторых из них нам действительно нужно сохранить иерархию каталогов. Поэтому особенность «упаковки» Айви кажется действительно интересной! –