Ant задача удалить из локального репо ivy - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть локальный репозиторий, в котором артефакты публикуются как репозиторий, совместимый с m2.

<filesystem name="local" m2compatible="true" local="true">
    <ivy pattern="${ivy.local.default.root}/[organization]/[module]/[revision]/[module]-[revision](-[classifier]).pom" />
    <artifact pattern="${ivy.local.default.root}/[organization]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]" />
</filesystem>

У информации плюща есть '. В организации.

Например,

<info organization="com.github.org" module="module" rev="0.1" status="release"/>

Когда артефакты публикуются, они попадают в каталоги, подобные этим:

/.ivy2/local/com/github/org/module/0.1/*

Задача удаления настроена так:

<delete dir="${ivy.local.default.root}/${ivy.organization}/${ivy.module}/${ivy.revision}"/>

Я считаю, что это не такне работает, потому что ivy.organization не разбивается на отдельные каталоги для задачи удаления.

Как настроить проекты для правильного удаления опубликованных файлов JAR?

1 Ответ

0 голосов
/ 15 декабря 2018

Это можно сделать с помощью небольшого количества скриптов, чтобы вызвать String.replaceAll() для строки, которую вы хотите преобразовать во фрагмент пути к файлу.Например, со следующим macrodef:

  <!-- =============================================================================
    Replaces all '.' in groupId with '/' and put the result in a property
    Attributes:
    - groupId: maven groupId
    - result: name of the property in which to put the result
  ============================================================================== -->

  <macrodef name="pathFrom">
    <attribute name="groupId"/>
    <attribute name="result" default="path"/>
    <sequential>
      <local name="g"/>
      <property name="g" value="@{groupId}"/>
      <script language="javascript">
        project.setProperty("@{result}", project.getProperty("g").replaceAll("\\.", "/"));
      </script>
    </sequential>
  </macrodef>

Вот пример использования:

  <target name="test">
    <property name="myGroup" value="com.github.org"/>
    <pathFrom groupId="${myGroup}" result="tmp.path"/>
    <echo message="converted from '${myGroup}' to '${tmp.path}'"/>
  </target>

Со следующим выводом при вызове с ant test:

test:
    [echo] converted from 'com.github.org' to 'com/github/org'
...