从 Maven 配置文件执行 cargo:run
Executing cargo:run from a maven profile
我正在尝试编写一个 Maven profile
它将 运行 cargo:run
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>
检查插件配置:您发布的代码中的 executions
元素在 configuration
元素内,这是不正确的,因此它会被 Maven 忽略。 (查看 official documentation 了解更多详情)。
executions
部分应该在 configuration
部分之外(并且在同一嵌套级别)。然后它们还可以包括一个进一步的 configuration
部分,这将是特定包装 execution
使用的配置,而前一个将是默认应用于所有列出的执行的更通用的配置。
在这种特定情况下,Cargo 插件还在 Maven configuration
部分中 provides 另一个 configuration
元素,这让事情有点混乱和误导(不同的名称应该已被选中,在我看来)。
因此,在您的情况下,您应该从 configuration
部分移出 executions
部分,如下所示:
<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>
我正在尝试编写一个 Maven profile
它将 运行 cargo:run
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>
检查插件配置:您发布的代码中的 executions
元素在 configuration
元素内,这是不正确的,因此它会被 Maven 忽略。 (查看 official documentation 了解更多详情)。
executions
部分应该在 configuration
部分之外(并且在同一嵌套级别)。然后它们还可以包括一个进一步的 configuration
部分,这将是特定包装 execution
使用的配置,而前一个将是默认应用于所有列出的执行的更通用的配置。
在这种特定情况下,Cargo 插件还在 Maven configuration
部分中 provides 另一个 configuration
元素,这让事情有点混乱和误导(不同的名称应该已被选中,在我看来)。
因此,在您的情况下,您应该从 configuration
部分移出 executions
部分,如下所示:
<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>