Gradle过滤器替换XML文件中的标记

时间:2017-12-18 12:34:12

标签: gradle

我有以下代码来替换我的xml文件中的令牌,但是当我尝试使用项目变量时代码无效。我传递变量测试为-Ptest =“value”。对编码值进行硬编码是有效的,但在构建项目时我不能给它带来很大的价值。

的applicationContext.xml

YourPojoClass model = new Gson().fromJson(jsonResponse, YourPojoClass.class);

的build.gradle

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:jee="http://www.springframework.org/schema/jee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd">
    <bean id="dataSource" class="myclass">
        <property name="clientInfo" value="@test@"/>
    </bean>
</beans>

1 个答案:

答案 0 :(得分:0)

在您的XML中,您使用令牌@test@,但在您的任务配置中,您告诉Gradle替换@APPNAME@,这不匹配,因此不会替换任何内容。改变以匹配另一个,它将起作用。

除此之外,"${project.test}"并非真正必要,只需撰写project.test甚至test即可。如果变量是String的唯一内容,则无需动态解析变量。

除此之外,将它作为一个单独的复制任务可能不是最好的主意,如果你有不同的任务在同一位置产生输出,它可以对抗可靠和良好的最新检查。对于此用例,您可以配置processTestResources任务,例如: G。使用filesMatching块匹配要替换的文件,然后在其中配置过滤器。

此外,无论您是使用自己的任务还是配置processTestResources任务,您还应该将test属性的值添加到任务的输入中,以便最多-date check mechanism知道如果属性值改变,它必须重新运行任务。否则,即使值发生变化,也只会将任务作为最新状态跳过。