2013-09-04 2 views
1

Я использую плющ для управления связкой файлов deb, которые зависят друг от друга. Я генерирую файлы плюща для каждого deb и добавляя зависимости там, где это необходимо. Я пытаюсь сделать публикацию, но сначала мне нужно сделать шаг решения.Публикация нескольких модулей плюща по одной проблеме зависимости

Я не могу решить, потому что ни один из модулей не находится в репозитории плюща. Это зависимости от времени выполнения, и я использую их, чтобы вытащить из плюща репо конфигурацию файлов deb.

Я попробовал пример «multi-project», который поставляется с ivy src, и обнаружил, что если вы попытаетесь опубликовать проект «размер», он также потерпит неудачу таким же образом; Я сделал ant clean-all, прежде чем имитировать артефакты/метаданные, являющиеся репо. Я заметил, что он использует <ivy:buildlist /> (http://ant.apache.org/ivy/history/latest-milestone/use/buildlist.html)

Это не работает. Я использую сгенерированный список для выполнения публикации в порядке и получения той же самой проблемы.

Почему мой список сборки возвращает мне тот же набор файлов, что и внутри него?

<target name="publish-shared" depends="" description="--> Publish project's artifacts to SHARED repository"> 
      <ivy:buildlist reference="ivy.dep.files"> 
        <fileset dir="${ivy.build.dir}" includes="**/ivy.xml"/> 
      </ivy:buildlist> 
      <for param="ivy.dep.file" list="${toString:ivy.dep.files}" delimiter=":"> 
        <sequential> 
          <antcall target="publish-shared-onemod" inheritAll="true" inheritRefs="true"> 
            <param name="ivy.dep.file" value="@{ivy.dep.file}" /> 
          </antcall> 
        </sequential> 
      </for> 
    </target> 
    <target name="publish-shared-onemod"> 
      <ivy:resolve /> 
      <ivy:publish resolver="shared" artifactspattern="${target.dir}/[artifact].[ext]" status="integration" /> 
    </target> 

Update: я должен был обратить вспять процесс buildlist <ivy:buildlist reference="ivy.dep.files" reverse="true"> Но что очень странно, когда я указал модуль корня (пример: <ivy:buildlist reference="ivy.dep.files" root="${ivy.module.root}">) это не нужно обратное. Я должен делать что-то неправильно, но пока я не получу ошибку, я пойду с реверсом.

+0

Дополнительная информация: Я генерирую debian pkgs через процесс CMake. Файлы ivy.xml также генерируются с длинной стороны. Из-за этого у меня нет файлов build.xml для каждой части моего проекта. Я надеюсь решить это с помощью одного скрипта ant в корневом каталоге моей сборки. –

+0

Я пробовал это и получил эквивалентный вывод в своих операциях эха '<путь id =" tmp "> ivy.dep.files = $ {toString: ivy.dep.files} ************** tmp = $ {toString: tmp} ' –

ответ

0

Вместо того, чтобы публиковать из родительского скрипта сборки, почему бы не получить каждый подмодуль, чтобы выполнить его собственное решение плюса и опубликовать?

buildlist задача определит правильный порядок сборки и каждый подмодуль будет постепенно строить зависимости от следующего:

<target name="build-list"> 
    <ivy:buildlist reference="build-path"> 
     <fileset dir="." includes="modules/**/build.xml"/> 
    </ivy:buildlist> 
</target> 

<target name="publish" depends="build-list"> 
    <subant target="publish" buildpathref="build-path" /> 
</target> 

Примечание:

  • subant задача является более простой альтернативой «для» задачи, которая является внешней зависимостью от ant-contrib.
+0

Я не могу это сделать вы предложили, потому что у меня нет скриптов ant для каждого модуля –

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