Цель "установить" копирует артефакт в целевой каталог и в локальный репозиторий.
Как я могу сообщить Maven, чтобы он скопировал его также в заданный каталог (например, в каталог развертывания JBoss).
Цель "установить" копирует артефакт в целевой каталог и в локальный репозиторий.
Как я могу сообщить Maven, чтобы он скопировал его также в заданный каталог (например, в каталог развертывания JBoss).
Цель copy maven-dependency-plugin делает то, что вы хотите, см. example.
Однако не рекомендуется копировать что-либо вне вашего целевого каталога (или ${project.build.directory}
, если быть точным) - особенно если такое действие связано с фазой сборки, поскольку оно вводит неожиданные побочные эффекты сборки и иногда даже потери воспроизводимости.
Как отмечает @Andreas_D, есть более эффективная альтернатива для развертывания JBoss; аналогично для развертывания в других приложениях.
В соответствии с http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html вы можете скопировать только что созданный артефакт в конкретный каталог:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-installed</id>
<phase>install</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
</artifactItem>
</artifactItems>
<outputDirectory>some-other-place</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
Если вы хотите скопировать файл на веб-сервер (локальный или удаленный), вы можете использовать плагин загрузки Maven:
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-upload-plugin</artifactId>
<version>1.1</version>
<configuration>
<resourceSrc>
${project.build.directory}/${project.build.finalName}.${project.packaging}
</resourceSrc>
<resourceDest>${jboss.deployDir}</resourceDest>
<serverId>${jboss.host}</serverId>
<url>${jboss.deployUrl}</url>
</configuration>
</plugin>
И для настройки параметров интеллектуальным способом я использую профили maven:
<profiles>
<!-- local deployment -->
<profile>
<id>developpement</id>
<properties>
<jboss.host>localhost</jboss.host>
<jboss.deployDir>appli/jboss-4.0.4.GA/server/default/deploy/</jboss.deployDir>
<jboss.deployUrl>file://C:/</jboss.deployUrl>
</properties>
</profile>
<!-- distant deployment -->
<profile>
<id>validation</id>
<properties>
<jboss.host>ENV_val</jboss.host>
<jboss.deployDir>/home/envval/jboss/server/default/deploy/</jboss.deployDir>
<jboss.deployUrl>scp://PROJECT_LAN_HOST</jboss.deployUrl>
</properties>
</profile>
</profiles>
Я создал "ant launcher", чтобы использовать его, щелкнув под Eclipse ant view:
<target name="copy war to JBoss local" description="Copy war to local JBoss">
<maven goal="upload:upload" options="-Pdeveloppement" />
</target>
Но вы можете просто запустить его в командной строке:
mvn upload:upload -Pdeveloppement
Кстати, для удаленного развертывания вам может понадобиться пароль для входа в scp для работы. Вы должны добавить их в файл Maven settings.xml:
<settings>
...
<servers>
<server>
<id>ENV_val</id>
<username>login</username>
<password>password</password>
</server>
</servers>
...
</settings>
Лучший подход - использовать плагин, который будет фактически развертывать ваше приложение, например cargo или jboss-maven plugin (кредит для @Andreas_D для этого).
Это будет лучший подход к использованию копировального или универсального средства загрузки, поскольку развертывание - это то, что вы на самом деле пытаетесь сделать.
С плагином для загрузки вы можете развернуть на множество запущенных серверов. Мы использовали этот подход для тестирования локально в причале, используя планер причала во время сборки и имели профиль для развертывания для кота по запросу через груз.
Примечание. Если у вас установлен целевой сервер (JBOSS) локально в блоке dev, вы также можете использовать груз для запуска/остановки вашего сервера во время процесса сборки. Недостатком этого подхода является то, что вам понадобится ссылка на его местоположение в файле pom, так что либо все разработчики устанавливают его в том же месте, либо в системное свойство, которое определяет, где оно расположено (аналогично JAVA_HOME).