2014-10-17 3 views
1

Отказ от ответственности: Я новичок с помощью Ant + Ivyзависимости Resolve плюща из другого проекта в build.xml

У меня есть следующее затмение конфигурации:

ProjectA зависит от ProjectB и ProjectC

ProjectB зависит от Проект C

Каждый проект имеет свой файл ivy.xml.

ProjectA имеет build.xml файл так:

(...) 

<ivy:resolve file="../ProjectC/ivy.xml" /> 
<ivy:cachepath pathid="ivy.deps.default" conf="default" /> 
<ivy:cachefileset setid="ivy.deps.default.fileset" conf="default"/> 


<ivy:resolve file="../ProjectB/ivy.xml" /> 
<ivy:cachepath pathid="ivy.deps.default" conf="default" /> 
<ivy:cachefileset setid="ivy.deps.default.fileset" conf="default"/> 


<ivy:resolve file="ivy.xml" /> 
<ivy:cachepath pathid="ivy.deps.default" conf="default" /> 
<ivy:cachefileset setid="ivy.deps.default.fileset" conf="default"/> 

<path id="classpath"> 
    <fileset dir="${webroot}/WEB-INF/lib" erroronmissingdir="no"> 
     <include name="*.jar"/> 
    </fileset> 
    <fileset dir="${libraries}" erroronmissingdir="no"> 
     <include name="*.jar"/> 
    </fileset> 
    <path refid="ivy.deps.default"/> 
</path> 

    (...) 

<javac destdir="c:/abc" includeantruntime="yes" classpathref="ivy.deps.default"> 
         <src path="../ProjectC/src"/> 
         <classpath refid="classpath"/> 
        </javac> 

(... Compile ProjectB ...) 
(... Compile ProjectA ...) 

Так работает этот build.xml приводит к ошибке, говоря, что ProjectC не мог собрать, потому что не хватало * .jar файл, который должен иметь был разрешен командой ivy: resolve.

Мой вопрос:

  • Как сделать build.xml, который автоматически получать зависимости от дочерних проектов, а также компилировать все дочерние проекты?
+1

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

+1

См. Также: http://stackoverflow.com/questions/4106143/ivy-simple-shared-repository/4110220#4110220 –

ответ

1

Похоже, у вас есть файл плюща для каждого проекта, но у вас нет файла сборки для каждого проекта. Как отметил Марк в вышеупомянутом комментарии, каждый проект должен строиться индивидуально.

Например:

  • Построить ProjectB в каталог, как "SharedLibrary" на вашем диске. (Nice little JAR file)
    • Обратите внимание на файл IVY ProjectB. Она устанавливает орг, название артефакта, версию, и т.д.
  • Добавить в «SharedLibrary» к вашему плющу <resolvers> списка так, что Плющ ищет зависимости там
  • Добавьте ProjectB как зависимость Projecta (Использование отмеченной информации от плюща ProjectB)

Это должно привести вас к гонкам!

Совет: вместо каталога «SharedLibrary» рассмотрите возможность использования чего-то вроде Artifactory для управления артефактами и оттуда.

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