2014-10-30 5 views
1

Я хотел бы добавить зависимость от моего проекта Ant; например, я хочу добавить зависимость hibernate к моему проекту.Как добавить зависимость от проекта Ant

Я новичок в Ant. Прежде, чем я использовал инструмент maven для создания проекта. В maven очень легко добавить зависимость от файла pom.xml.

Мой build.xml файл

<?xml version="1.0" encoding="UTF-8"?> 
<project name="Demo ANT Project-1" default="run"> 

    <target name="run" depends="compile"> 
     <java classname="com.company.product.RoundTest"> 
     <classpath path="staging"/> 
     </java> 
    </target> 


    <target name="compile"> 
     <javac includeantruntime="false" srcdir="./src" destdir="staging" /> 
    </target> 
</project> 

Я хочу, чтобы добавить зависимость выше Ant файла XML.

+1

Вы можете использовать ant '' для добавления зависимостей, или вы можете использовать инструмент, например, apache ivy. – Viraj

+0

Используя maven, я могу добавить зависимость от maven repository.is это возможно с помощью инструмента ANT. –

+1

С плющом вы можете использовать репозиторий maven. см. http://ant.apache.org/ivy/history/latest-milestone/tutorial/start.html – Viraj

ответ

4

Прежде всего, Ant старше, чем Maven, и поэтому не включает основную поддержку управления зависимостями.

Добавление плющ

Ivy является основой управления зависимостей для Ant

http://ant.apache.org/ivy/

Чтобы включить его вам нужно сделать две вещи. Во-первых, включают пространство имен плющ задач в верхней части файла сборки:

<project .... xmlns:ivy="antlib:org.apache.ivy.ant"> 

во-вторых, вам нужно установить плющ банку в один из стандартных мест, используемых ANT для его 3rd расширения партии:

  • $ ANT_HOME/Библиотека
  • $ HOME/.ant/Библиотека

Я хотел бы сделать мой строит автономные так включать в себя цель, которая делает это для меня автоматически:

<available classname="org.apache.ivy.Main" property="ivy.installed"/> 

<target name="install-ivy" description="Install ivy" unless="ivy.installed"> 
    <mkdir dir="${user.home}/.ant/lib"/> 
    <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar"/> 
    <fail message="Ivy has been installed. Run the build again"/> 
</target> 

Использование плющ

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

<target name="resolve" depends="install-ivy" description="Use ivy to resolve classpaths"> 
    <ivy:cachepath pathid="compile.path"> 
     <dependency org="org.hibernate" name="hibernate" rev="3.2.7.ga" conf="default"> 
     <exclude org="javax.transaction"/> 
     </dependency> 
    </ivy:cachepath> 
</target> 

производит следующий вывод:

resolve: 
[ivy:cachepath] :: Apache Ivy 2.3.0 - 20130110142753 :: http://ant.apache.org/ivy/ :: 
[ivy:cachepath] :: loading settings :: url = jar:file:/home/mark/.ant/lib/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml 
[ivy:cachepath] :: resolving dependencies :: #;[email protected] 
[ivy:cachepath]  confs: [default] 
[ivy:cachepath]  found org.hibernate#hibernate;3.2.7.ga in public 
[ivy:cachepath]  found net.sf.ehcache#ehcache;1.2.3 in public 
[ivy:cachepath]  found commons-logging#commons-logging;1.0.4 in public 
[ivy:cachepath]  found asm#asm-attrs;1.5.3 in public 
[ivy:cachepath]  found dom4j#dom4j;1.6.1 in public 
[ivy:cachepath]  found antlr#antlr;2.7.6 in public 
[ivy:cachepath]  found cglib#cglib;2.1_3 in public 
[ivy:cachepath]  found asm#asm;1.5.3 in public 
[ivy:cachepath]  found commons-collections#commons-collections;2.1.1 in public 
[ivy:cachepath] :: resolution report :: resolve 373ms :: artifacts dl 10ms 
[ivy:cachepath]  :: evicted modules: 
[ivy:cachepath]  commons-collections#commons-collections;2.1 by [commons-collections#commons-collections;2.1.1] in [default] 
    --------------------------------------------------------------------- 
    |     |   modules   || artifacts | 
    |  conf  | number| search|dwnlded|evicted|| number|dwnlded| 
    --------------------------------------------------------------------- 
    |  default  | 10 | 0 | 0 | 1 || 9 | 0 | 
    --------------------------------------------------------------------- 

Этот управляемый плющ способ может быть использован в вашей задаче javac

<javac includeantruntime="false" srcdir="./src" destdir="staging" classpathref="compile.path"/> 
+0

Любые идеи об этой ошибке. D: \ jijesh \ workspace \ Demo \ build.xml: 4: Проблема: не удалось создать задачу или тип antlib: org.apache.ivy.ant: resolve Причина: Имя не определено. Действие: Проверьте орфографию. Действие: Убедитесь, что объявлены какие-либо пользовательские задачи/типы. Действие: Проверьте, что были сделаны какие-либо . В этом пространстве имен не было задано никаких типов или задач. –

+0

@jijeshAj ANT отсутствует бандаж плюща. Это цель моей цели «установки-плюща». Если класс плюща нет, он автоматически загружает его. –

+0

Я загрузил его и скопировал в папку ant/bin и users/.ant/lib. Пока отображается ошибка. –

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