Java 使用Gradle编写特定于环境的web.xml、log4j.xml

Java 使用Gradle编写特定于环境的web.xml、log4j.xml,java,gradle,Java,Gradle,我的web.xml中有类似的内容: <context-param> <param-name>log4jConfigLocation</param-name> <param-value>${path}/log4j.xml</param-value> </context-param> log4jConfigLocation ${path}/log4j.xml 在log4j.xml中: <appen

我的web.xml中有类似的内容:

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>${path}/log4j.xml</param-value>
</context-param>  

log4jConfigLocation
${path}/log4j.xml
在log4j.xml中:

<appender name="errorfile" 
    class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="${logfiles}/errors.log" />
    <param name="Threshold" value="ERROR" />
    <param name="datePattern" value="'.'yyyy-MM-dd" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d %-5p [%t] (%c) - %m%n" />
    </layout>
</appender>

当gradle构建时,我希望通过在gradle.properties文件中提供正确的值${path}和${logfiles}来注入它们

理想情况下,我希望运行一个独立于构建的任务来准备文件。这样,构建过程可能更容易。

Gradle的任务支持过滤,即用任意属性源的值替换占位符(
${property}
)。在您的情况下,它将类似于:

processResources {
    expand project.properties
}

它将在
processResources
任务期间用
project.properties
(和
gradle.properties
填充它们)中的值替换
src/main/resources
中文件的所有标记。

现在我正在复制并替换下面@madhead建议的流。我只是想知道这个场景的正确方法是什么。我在文档中找不到直接相关的信息,但我认为在部署到不同环境时,这是常见的情况。