Скачивайте баночки с nexus, используя инструмент сборки муравьев, как это делается автоматически в Maven - PullRequest
4 голосов
/ 11 мая 2011

У меня есть build.xml (на основе муравья), который требует от jx нексуса для копирования в существующую папку lib.т.е. когда он собирается, он должен скопировать jar из nexus с определенной версией и затем скопировать в lib & do compilation.как в случае с maven, мы определяем артефакт и его версию.При изменении автоматически загрузит его из репозитория Maven.Как я могу сделать это в сборках на основе муравья?

Совет экспертов экспертов.

Ответы [ 4 ]

7 голосов
/ 09 декабря 2011

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

<project>
<target name="get-all">
    <mkdir dir="lib" />
    <nexus-get 
        groupId="foo.bar" 
        artifactId="some-artifact"
        version="1.0.28"
        repo="releases"
        extension="jar" 
        dest="lib" 
    />

    <nexus-get 
        groupId="foo.bar" 
        artifactId="another-artifact"
        version="1.0.0-SNAPSHOT"
        repo="snapshots"
        extension="jar" 
        dest="lib" 
    />
</target>

<macrodef name="nexus-get">
    <attribute name="groupId"/>
    <attribute name="artifactId"/>
    <attribute name="version"/>
    <attribute name="repo"/>
    <attribute name="extension"/>
    <attribute name="dest"/>

    <sequential>
        <get src="http://my-nexus:9999/nexus/service/local/artifact/maven/redirect?r=@{repo}&amp;g=@{groupId}&amp;a=@{artifactId}&amp;v=@{version}&amp;e=@{extension}" dest="@{dest}/@{artifactId}.@{extension}" usetimestamp="true" />
    </sequential>
</macrodef>

4 голосов
/ 11 мая 2011

Возможно, вас заинтересует Плющ .Это подпроект Ant для управления зависимостями.Он идеально подходит для вашей ситуации, потому что он может читать репозитории Maven и предоставляет задачи Ant для загрузки опубликованных артефактов, построения путей классов и т. Д. Он поддерживает ваш вариант использования для получения самой последней версии зависимости, если вы настроите его для запросадля "последней.релизной" ревизии модуля.

3 голосов
/ 11 мая 2011

Хотя, безусловно, существуют конкретные способы комбинирования ant и maven, но самая простая вещь (если вы знаете URL-адрес nexus и параметры артефакта для создания URL-адреса для загрузки) - это просто использовать задачу ant Get .

<project name="MyProject" default="resolveDependencies" basedir=".">
  <target name="resolveDependencies">
   <mkdir dir="lib" />
   <get src="http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.9/log4j-1.2.9.jar" dest="lib/log4j-1.2.9.jar" usetimestamp="true" />
  </target>
</project>
0 голосов
/ 05 декабря 2012

Возможно, используйте Maven Ant Tasks .

Как показано на http://maven.apache.org/ant-tasks/examples/dependencies.html Может перечислять зависимости в ant, а также делать такие вещи, как копировать их

Я думаю, что раздел Использование FileSets и Version Mapper покрывает ваши потребности

Вы можете использовать is filesetId, который даст вам ссылку на набор файлов, который можно использовать для копирования файлов в определенное место. Например, чтобы заполнить WEB-INF / lib вашими зависимостями, вы можете использовать следующее:

<artifact:dependencies filesetId="dependency.fileset" useScope="runtime">
  <dependency groupId="junit" artifactId="junit" version="3.8.2" scope="test"/>
</artifact:dependencies>
<copy todir="${webapp.output}/WEB-INF/lib">
  <fileset refid="dependency.fileset" />
  <!-- This mapper strips off all leading directory information -->
  <mapper type="flatten" />
</copy>
...