Как обернуть сборку Ant с помощью Maven? - PullRequest
39 голосов
/ 22 сентября 2009

Мы используем maven для нашего продукта с большим количеством отверстий. Все наши артефакты развернуты в общем хранилище архива с использованием цели развертывания maven. Сейчас я интегрирую сторонний продукт, который имеет сборку муравья. Я знаю, как вызывать цели ant из maven с помощью плагина antrun, но я не уверен, как настроить pom в этом случае. Я не хочу, чтобы maven фактически генерировал артефакт, но я хочу, чтобы он извлекал артефакт, созданный ant при запуске цели развертывания maven.

Я планирую разместить pom рядом с build.xml. Пом будет использовать плагин antrun в цели пакета, чтобы вызвать цель ant в соответствующее время для создания артефакта .war.

Вопросы:

a) Я создаю .war-файл, но он создается с помощью ant, а не Maven, поэтому не имеет смысла использовать упаковку типа war в pom. Каким должен быть мой тип упаковки?

b) Как заставить maven извлечь артефакт из моего каталога вывода ant для цели развертывания?

c) Если нет хороших ответов на вопросы A и B, существуют ли задачи ant, которые дублируют функциональность развертывания maven для передачи моего артефакта .war в общий репозиторий?

Ответы [ 4 ]

51 голосов
/ 22 сентября 2009

Вы можете использовать maven-antrun-plugin , чтобы вызвать сборку муравья. Затем используйте build-helper-maven-plugin , чтобы прикрепить банку, созданную ant, к проекту. Прикрепленный артефакт будет установлен / развернут рядом с помпой.
Если вы укажете свой проект с упаковкой pom, Maven не будет конфликтовать со сборкой ant.

В следующем примере предполагается, что ant build.xml находится в src / main / ant, имеет цель compile и выводит ant-output.jar.

<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <executions>
    <execution>
      <phase>process-resources</phase>
      <configuration>
        <tasks>
          <ant antfile="src/main/ant/build.xml" target="compile"/>
        </tasks>
      </configuration>
      <goals>
        <goal>run</goal>
      </goals>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>1.3</version>
  <executions>
    <execution>
      <id>add-jar</id>
      <phase>package</phase>
      <goals>
        <goal>attach-artifact</goal>
      </goals>
      <configuration>
        <artifacts>
          <artifact>
            <file>${project.build.directory}/ant-output.jar</file>
            <type>jar</type>
          </artifact>
        </artifacts>
      </configuration>
    </execution>
  </executions>
</plugin>
3 голосов
/ 22 сентября 2009

На самом деле вы можете обернуть ANT-проект в Maven, используя несколько целей запуска муравья , как я писал в другом вопросе. Предполагая, что в вашем существующем проекте ant есть задачи по очистке и сборке, это может быть полезным способом обернуть проект, чтобы вы могли использовать maven цели и сопоставить его с существующим кодом ant.

1 голос
/ 28 июня 2010
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
        <execution>
            <id>install-library</id>
            <phase>install</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>x.x</groupId>
                <artifactId>ant-out-atifacts</artifactId>
                <version>${project.version}</version>
                <file>ant-output.jar</file>
                <packaging>zip</packaging>
            </configuration>
        </execution>
    </executions>
</plugin>
0 голосов
/ 15 января 2010

См. Это: Почему вы должны использовать задачи Maven Ant вместо Maven или Ivy

И, в частности, как вызвать цель Maven из Ant, можно найти в этом примере:

http://code.google.com/p/perfbench/source/browse/trunk/perfbench/grails-gorm/build.xml

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...