如何在Maven POM.xml中处理属性的区分大小写

时间:2018-12-15 02:12:18

标签: java maven

我正在研究一个Maven项目,该项目要求在命令行上设置SystemPropertyVariable(maven-surefire-plugin)(-Dinstance = $ instance)并按如下所示在CAP中传递值

  

MVN测试-Dinstance = UAT

 <build>
     <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.14.1</version>
            <configuration>
              <argLine>-Xmx512m -XX:MaxPermSize=256m</argLine>
              <!--  Suite testng xml file to consider for test execution -->
                <testFailureIgnore>true</testFailureIgnore>
                <suiteXmlFiles>
                    <suiteXmlFile>testng.xml</suiteXmlFile>
                </suiteXmlFiles>
                <systemPropertyVariables>
                    <instance>${instance}</instance>
                    <urltype>${urltype}</urltype>
                </systemPropertyVariables>
            </configuration>
        </plugin> 
 </build>

我需要在编译之前或在编译阶段将该字符串转换为小写字母,以便可以在不同文件中使用它,甚至可以将其他jar文件的参数作为输入传递给同一项目中使用的

注意:正如我之前所说,它将作为参数传递给另一个jar文件,作为POM的输入。所以我想在该jar中使用之前先转换为POM中的小写字母,然后从它生成的数据文件中将其用于测试中。

请帮助我,谢谢

1 个答案:

答案 0 :(得分:2)

您可以通过gmaven插件使用groovy来操纵属性:

<plugin>
    <groupId>org.codehaus.gmavenplus</groupId>
    <artifactId>gmavenplus-plugin</artifactId>
    <version>1.6.2</version>

    <dependencies>
        <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>2.5.3</version>
            <type>pom</type>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <executions>
        <execution>
            <id>add-dynamic-properties</id>
            <phase>initialize</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <scripts>
                    <script>
                        <![CDATA[
                            instance = "${instance}"
                            lcInstance = instance.toLowerCase()
                            project.properties.setProperty('lcInstance', lcInstance)
                        ]]>
                    </script>
                </scripts>
            </configuration>
        </execution>
    </executions>
</plugin>

$ {lcInstance}现在包含$ {instance}的小写副本