Проблема
После сборки проекта с помощью Build сервера или на локальной машине требуется выложить полученное приложение на тестовый сервер.
Решение
Добавим в pom.xml специальный профиль, в котором с помощью плагина
<profiles>
<profile>
<id>deployApp</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>deployApp</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<!-- Здесь разместим конфиг ant'а, который и сделает все мясо-->
</tasks>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-jsch</artifactId>
<version>1.7.1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</profile>
</profiles>
выложим собранное в фазе package приложение на удаленный сервер.
<sshexec host="${deployApp.host}" trust="true"
username="${deployApp.username}" password="${deployApp.passwd}"
command="${deployApp.containerStopCmd}"/>
<scp trust="true" password="${deployApp.passwd}"
file="${project.build.directory}/${project.build.finalName}.${project.packaging}"
remoteTofile="${deployApp.username}@${deployApp.host}:${deployApp.targetWar}" />
<sshexec host="${deployApp.host}" trust="true"
username="${deployApp.username}" password="${deployApp.passwd}"
command="${deployApp.containerStartCmd}"/>
Maven нужно запускать с параметром -P deployApp
ЗЫ. При использовании ssh возможны грабли, если команда запуска контейнера создает новый процесс (а так обычно и бывает). В этом случае помогает nohup