我正在尝试编写将运行profile
cargo:run
的maven goal
并启动容器并等待用户按CTRL + C
停止。但是,当我运行mvn clean install -PstartApplication
时,命令成功完成而不等待。我错过了什么?
<profile>
<id>startApplication</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<wait>true</wait>
<container>
<containerId>tomcat7x</containerId>
<type>installed</type>
<home>${catalina.home}</home>
</container>
<configuration>
<type>standalone</type>
<home>${project.basedir}/target/tomcat7x</home>
</configuration>
<deployables>
<deployable>
<properties>
<context>ROOT</context>
</properties>
<groupId>com.demo.web</groupId>
<artifactId>sample-web-app</artifactId>
<type>war</type>
</deployable>
</deployables>
<executions>
<execution>
<id>start-container</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</configuration>
</plugin>
</plugins>
</build>
</profile>
答案 0 :(得分:1)
检查插件配置:您发布的代码中的executions
元素位于configuration
元素内,这是不正确的,因此Maven会忽略它。 (查看official documentation了解更多详情。)
executions
部分应该在configuration
部分之外(并且处于相同的嵌套级别)。然后,它们还可以包含另一个configuration
部分,该部分将是特定包装execution
使用的配置,而前一个部分将是默认应用于所有列出的执行的更通用的配置。
在这种特定情况下,Cargo插件还provides Maven configuration
部分中的另一个configuration
元素,这使得事情有点令人困惑和误导(应该使用不同的名称)在我看来,选择了。
因此,在您的情况下,您应该从executions
部分移出configuration
部分,如下所示:
<profile>
<id>startApplication</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<configuration>
<wait>true</wait>
<container>
<containerId>tomcat7x</containerId>
<type>installed</type>
<home>${catalina.home}</home>
</container>
<configuration>
<type>standalone</type>
<home>${project.basedir}/target/tomcat7x</home>
</configuration>
<deployables>
<deployable>
<properties>
<context>ROOT</context>
</properties>
<groupId>com.demo.web</groupId>
<artifactId>sample-web-app</artifactId>
<type>war</type>
</deployable>
</deployables>
</configuration>
<executions>
<execution>
<id>start-container</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>