Jenkins Maven Project Build shell不可用

时间:2017-04-11 16:30:44

标签: maven jenkins windows-shell

在Jenkins中,我使用选择参数插件来允许用户选择他们想要运行的套件。我遇到的问题是当我尝试更改参数部分中选择的选项以附加目录和.xml前缀时,作业失败。如果我将全名放在参数中并直接将其作为构建数据输入,它可以正常工作。下面是我的jenkins设置,pom和错误。

选择参数数据

Name    choice
Choices CopyFunctionality
        CopyToFunctionality

窗口批处理shell命令

@echo off

set SUITE=%choice%.xml

echo %SUITE%

构建值

clean test -PParameterisedBuild -DsuiteXmlFile=${SUITE}

POM个人资料

<profile>
            <id>ParameterisedBuild</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>2.19.1</version>
                        <configuration>
                            <suiteXmlFiles>
                                <suiteXmlFile>testNG XML Files\${SUITE}</suiteXmlFile>
                            </suiteXmlFiles>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

Maven错误

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project Expert_Models: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test failed: There was an error in the forked process
[ERROR] org.apache.maven.surefire.testset.TestSetFailedException: Suite file C:\Automation Framework\Jenkins\workspace\regression_tests_selectable\testNG XML Files\${SUITE} is not a valid file
[ERROR] at org.apache.maven.surefire.testng.TestNGXmlTestSuite.locateTestSets(TestNGXmlTestSuite.java:98)
[ERROR] at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:120)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[JENKINS] Archiving C:\Automation Framework\Jenkins\workspace\regression_tests_selectable\pom.xml to com.ExpertModels/Expert_Models/0.1-SNAPSHOT/Expert_Models-0.1-SNAPSHOT.pom
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
channel stopped
Finished: FAILURE

1 个答案:

答案 0 :(得分:0)

  1. 从POM中排除suiteXmlFiles参数,不需要这个参数,因为你的系统参数会覆盖它。
  2. 您不需要使用批处理脚本设置jenkins params,jenkins将为您解析params。
  3. 将套件参数传递给maven surefire插件,如:

    clean test -PParameterisedBuild -Dsurefire.suiteXmlFile = $ {choice(或者你选择的param的名称是什么)}

  4. P.S。此外,我建议根据上述信息重新评估配置文件的使用情况,我非常确定在99%的情况下,您可以简单地避免使用配置文件。