标准的POM文件被创建是为了让Grails将合适的核心Grails命令附加到它们对应的构建语法上,因此“compile”对应“compile”语法,“war”对应“package”语法。
当你想要将一个插件的命令附加到一个特定的phase上时,这可能没有什么帮助。
典型的例子是功能测试。
你如何确保你的功能测试(无论正在使用你决定的哪个插件)是使用“integration-test” phase来运行的?
恐怕不是:所有事情都是可能的。在这个例子中,你可以使用额外的“execution”块来将命令联合到一个 phase 上:<plugin>
<groupId>org.grails</groupId>
<artifactId>grails-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>¡­</goals>
</execution>
<!-- 添加 "functional-tests" 命令到 "integration-test" phase -->
<execution>
<id>functional-tests</id>
<phase>integration-test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<command>functional-tests</command>
</configuration>
</execution>
</executions>
</plugin>
这也展示了 grails:exec 目标,它可以用来运行任何Grails命令。
简单的将命令的名字作为command 系统特性,还可以通过 args 特性来选择性地指定参数:mvn grails:exec -Dcommand=create-webtest -Dargs=Book