0

Maven-Inovker-Plugin用来运行集成测试。我有一个 post-build-hook-script 调用verify.groovy来验证集成测试的结果。在groovy脚本中,我需要访问原始 POM 中的一些属性。我怎么做?

到目前为止,我已将其放在配置块中maven-invoker-plugin

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-invoker-plugin</artifactId>
                <version>1.7</version>
                <configuration>
                    <debug>true</debug>
                    <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
                    <projectsDirectory>src/test/resources/invoker-tests</projectsDirectory>
                    <pomIncludes>
                        <pomInclude>*/pom.xml</pomInclude>
                    </pomIncludes>
                    <postBuildHookScript>verify</postBuildHookScript>
                    <scriptVariables>
                        <param>${skip.var1}</param>
                        <param>${skip.var2}</param>
                    </scriptVariables>
                    <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
                    <goals>
                        <goal>clean</goal>
                        <goal>package</goal>
                    </goals>
                </configuration>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

我已经从这里scriptVariables的文档中输入了值。我很确定我做错了,正确的方法是什么?

skip.var1然后我如何skip.var2在我的 groovy 脚本中访问变量?我找不到有关此的任何文档或示例。到目前为止,我已经尝试了以下方法,但它不起作用。

def var1 = skip.var1

但我得到错误:

groovy.lang.MissingPropertyException: No such property: skip for class: Script1

如何正确访问变量?

4

2 回答 2

1

检查http://maven.apache.org/plugins/maven-invoker-plugin/run-mojo.html#scriptVariables

看来这个变量是在1.9版本中引入的

于 2017-02-04T00:57:04.520 回答
0

必须将版本更改为 1.9 或更高版本,如此处所述:http ://maven.apache.org/plugins/maven-invoker-plugin/integration-test-mojo.html#scriptVariables

还必须具有以下配置才能传递变量:

                    <scriptVariables>
                        <var1>${skp.var1}</var1>
                    </scriptVariables>

而在 groovy 脚本中,我可以直接使用var1.

所以这是有效的:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-invoker-plugin</artifactId>
                <version>2.0.0</version>
                <configuration>
                    <debug>true</debug>
                    <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
                    <projectsDirectory>src/test/resources/invoker-tests</projectsDirectory>
                    <pomIncludes>
                        <pomInclude>*/pom.xml</pomInclude>
                    </pomIncludes>
                    <postBuildHookScript>verify</postBuildHookScript>
                    <scriptVariables>
                        <var1>${skip.var1}</var1>
                    </scriptVariables>
                    <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
                    <goals>
                        <goal>clean</goal>
                        <goal>package</goal>
                    </goals>
                </configuration>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
于 2017-02-04T01:02:07.840 回答