gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:42:53 25 4
gpt4 key购买 nike

我有下面的代码来替换我的 xml 文件中的 token ,但是当我尝试使用项目变量时代码不起作用。我以 -Ptest="value"的形式传递变量测试。对值进行硬编码是可行的,但我无法在构建项目时对值进行硬编码。

applicationContext.xml

<?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>

build.gradle

task replaceTokens(type: Copy) {    
from "${buildDir}/classes/main/WEB-INF/spring"
into "${buildDir}/classes/test"
filter(ReplaceTokens, tokens: [test: "${project.test}"])
}

最佳答案

在您的 XML 中,您使用标记 @test@,但在您的任务配置中,您告诉 Gradle 替换 @APPNAME@,这不匹配,所以什么都没有更换。更改其中一个以匹配另一个,它将起作用。

除此之外,"${project.test}" 并不是真正必要的,只需编写 project.test 甚至 test 即可充足的。如果变量是字符串的唯一内容,则无需动态解析该变量。

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

此外,无论您是使用自己的任务还是配置processTestResources任务,您还应该将test属性的值添加到任务的输入中,这样最新的检查机制就知道如果属性值发生变化,它必须重新运行任务。否则,即使值发生变化,任务也会作为最新任务被简单地跳过。

关于Gradle 过滤器替换 XML 文件中的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47868627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com