执行货物:从maven配置文件运行

时间:2016-01-03 09:42:30

标签: maven maven-2 maven-cargo

我正在尝试编写将运行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>

1 个答案:

答案 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>