Ответ 1
mvn exec: java запускает приложение непосредственно из выхода компилятора ниже цели /- нет необходимости запускать из банки:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>uk.co.pookey.hibernate.App</mainClass>
<systemProperties>
<systemProperty>
<key>derby.stream.error.file</key>
<value>${basedir}/target/derby.log</value>
</systemProperty>
</systemProperties>
</configuration>
</execution>
</executions>
</plugin>
Если вы хотите запустить банку с помощью mvn exec: exec:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<!-- optional -->
<workingDirectory>/tmp</workingDirectory>
<arguments>
<argument>-jar</argument>
<argument>${basedir}/target/hibernate-derby-memory-${project.version}.jar</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
Если у вас возникли проблемы с остановкой причала, я бы рекомендовал запустить интеграционный тест (или просто не выходить из основного потока причала, не останавливая причал сначала, или просто использовать порт остановки причала)! В фоновом режиме можно запустить JVM и позволить maven снова остановить его после тестирования. Для этого есть три этапа: предварительная интеграция-тест, интеграция-тест или пост-интеграция-тест. Подробнее об этом можно узнать на http://docs.codehaus.org/display/MAVENUSER/Maven+and+Integration+Testing. При использовании plug-in-maven-плагина, config pom.xml может понравиться:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<!-- test start/stop: -->
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>deploy-war</goal>
</goals>
<configuration>
<daemon>true</daemon>
<systemProperties>
<systemProperty>
<name>some.prop</name>
<value>false</value>
</systemProperty>
</systemProperties>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
Вместо того, чтобы связывать плагин причала maven с этими фазами, вы можете привязать плагин maven antrun для выполнения произвольных команд.