Подтвердить что ты не робот

Как вызвать цель ant при переопределении цели в дочернем файле

У меня есть проект, который использует родительский ant файл

аналогично этому:

<project name="some-portlet" basedir="." default="deploy">  
  <import file="../build-common-portlet.xml" />
  <target name="test">
    <echo message="do foo"/>
    RUN TEST FROM PARENT HERE
  </target>
  </project>

теперь я хочу переопределить родительский тестовый объект таким образом:

  • выполнить некоторое копирование необходимых фляжек
  • запустить тестовый объект из родительского файла

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

Я хочу, чтобы цель также называлась тестом, так что CI может просто запустить тестовый объект.

Есть ли способ вызвать тест в./build-common-portlet.xml?

4b9b3361

Ответ 1

Самый простой способ - использовать зависимость от родительского теста.

Для этого важно, чтобы вы сохраняли атрибут <project> name в синхронизации с его именем файла (это не так, строго говоря, необходимо, но значительно улучшает читаемость и поддерживаемость script).

Итак, в build-common-portlet.xml:

<project
  name="build-common-portlet" <-- note the name
  ...
>
  <target name="test">
    <echo message="Calling parent test target"/>
    ...
  </target>
</project>

Таким образом, вы можете просто:

<project name="some-portlet" basedir="." default="deploy">  
  <import file="../build-common-portlet.xml" />
  <target name="test"
    depends="build-common-portlet.test" <-- note parent specification
  >
    <echo message="do foo"/>
    RUN TEST FROM PARENT HERE
  </target>
</project>

→ В ответ на комментарий

Если вы хотите выполнить некоторую работу перед запуском родительского теста, просто создайте новую цель и установите зависимость от нее перед родительским тестом:

<project name="some-portlet" basedir="." default="deploy">  
  <import file="../build-common-portlet.xml" />

  <target name="copy-jars">
    <echo message="copying jars"/>
  </target>

  <target name="test"
    depends="
      copy-jars,
      build-common-portlet.test
    "
  />
</project>

Ответ 2

Я нашел решение, которое выполнило бы мои команды, а затем вызовет тест из родительского файла ant. Переопределите родительский тест, затем вызовите, когда родительский тест, как только вы сделали свое собственное "волшебство".

Можно также вызывать все другие родительские цели.

Итак, для кого-то, не зная вашего файла ant, она может вызывать ant проверить, как он ожидался.

<project name="some-portlet" basedir="." default="deploy">
        <import file="../build-common-portlet.xml" />
<target name="test">
        <echo message="do foo"/>
        <ant antfile="../build-common-portlet.xml" target="test"/>
</target>
</project>