Статьи

Как запустить Ant цели с Maven?

Maven-antrun-plugin позволяет нам запускать муравьиные цели с различными фазами сборки maven. Я собираюсь объяснить очень практическое использование maven-antrun-plugin специально для разработчиков со средой разработки. апач-Maven-логотип

Обычно с maven build вы связываете свой проект либо с файлом war, либо с файлом ear . Вы можете напрямую скопировать этот файл war или ear в папку развертывания сервера, используя maven-antrun-plugin . Если ваш сервер — tomcat, вы можете легко скопировать ваш архивный файл в папку « webapps ». Некоторые разработчики используют для копирования файла архива в папку развертывания сервера вручную даже при их разработке. Для них этот пост будет очень полезным.

Если вы хотите использовать maven-antrun-plugin для копирования вашего архивного файла в папку развертывания сервера каждый раз, когда вы создаете проект, вы можете добавить следующий плагин в ваш файл pom.xml и использовать то, что когда-либо предназначается для ant, как вы хотите ,

В какой файл pom.xml я собираюсь поместить этот плагин?

Это хороший вопрос. Если у вас есть многомодульный проект, вы, вероятно, должны иметь либо ушной модуль, либо военный модуль. Выберите файл pom.xml этого модуля и поместите туда следующий плагин. Когда вы строите этот модуль проекта, большую часть времени, он будет последним модулем, когда вы создаете свой проект на корневом уровне, maven создаст либо war-файл, либо ear-файл внутри целевой директории вашего модуля проекта. Мы можем настроить maven-antrun-plugin так, чтобы он копировал этот файл war или ear в папку развертывания сервера.

В моем случае у меня есть многомодульный проект, а один модуль — это веб-модуль. Я должен поместить maven-antrun-plugin в файл pom.xml веб-модуля.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
<build>
    <finalName>shims-web</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>install</phase>
                    <configuration>
                          <target>
                              <copy file="${project.build.directory}/shims-web.war" todir="${env.CATALINA_HOME}/webapps"/>
                          </target>
                    </configuration>
                    <goals>
                         <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Если вы проверяете приведенный выше фрагмент файла pom.xml, я указал « install » в качестве фазы выполнения. Он просто говорит, что «выполнить эту цель муравья сразу после фазы жизненного цикла установки» сборки maven. При выполнении ‘ install ‘ maven упакует весь проект в локальный репозиторий как файл war или ear, чтобы использовать его в качестве зависимости в других проектах локально. Также это создаст тот же файл в целевой директории вашего рабочего пространства.

Наша цель — скопировать этот файл из целевого директора в папку развертывания сервера со сборкой. $ {Env.CATALINA_HOME} будет ссылаться на наш каталог установки tomcat.

Теперь создайте свой проект или модуль проекта. Вы можете перейти в каталог вашего проекта или каталог модуля проекта, где находится наш измененный файл pom.xml. Запустите следующую команду.

1
$mvn clean install

Приведенная выше команда переходит во все подпроекты и запускает clean , а затем install (включая все предыдущие шаги). Вы можете запустить эту команду на уровне корневого проекта, которая создает весь проект, или вы можете запустить ее для определенного модуля проекта, который создает только этот проект.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
.......................
 
[INFO] --- maven-antrun-plugin:1.7:run (default) @ shims-web ---
 
[INFO] Executing tasks
 
main:
 
[copy] Copying 1 file to /home/vinesh/apache-tomcat-7.0.25/webapps
 
[INFO] Executed tasks
 
[INFO] ------------------------------------------------------------------------
 
[INFO] BUILD SUCCESS ........................

Если вы используете m2eclipse для создания своего проекта, иногда вы можете столкнуться со странным сценарием следующим образом. Мы надеемся, что maven скопирует наш архивный файл в папку развертывания сервера после завершения сборки. Но когда-нибудь maven скопирует наш архивный файл в саму папку рабочего пространства проекта, создав структуру каталогов, которую мы упомянули в качестве целевого каталога в нашем файле pom.xml нашей цели копирования.

Например, в этом случае он создаст следующую структуру каталогов в нашей локальной папке рабочего пространства, а не скопирует файл в папку сервера. Просто взгляните на следующее изображение.

МВН

Мы не ожидаем этого сценария.

Как мы можем преодолеть это?

Вы должны отредактировать цель сборки maven в eclipse, указав переменную среды CATALINA_HOME. Вы можете сделать это следующим образом.

Откройте окно « Run Configurations » в Eclipse и разверните категорию « Maven Build ». Вы можете увидеть все maven цели, которые вы создали до сих пор, там перечислены. Выберите цель maven, которая создаст ваш проект с целью « чистой установки ».

А затем откройте вкладку « Окружающая среда ». Там вы можете добавить новую переменную для переменной среды CATALINA_HOME следующим образом.

EVN

Нажмите кнопку «Применить», а затем снова запустите свою цель Maven. Внимательно изучите консоль затмения. Вы можете видеть, что maven копирует ваш архивный файл в папку развертывания сервера.

Ссылка: Как запустить цели Ant с Maven? от нашего партнера JCG Семики Калуге в блоге Skillshared.