Gradle使用过滤器替换jsp中的文本

Jos*_*osh 9 jsp replace build gradle

我有一个jsp包含一个看起来像的CSS链接

<link type="text/css" href="/css/login-min.css" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

为了防止浏览器缓存css文件,我们用css login-min.css的名称和时间戳或版本号替换

login-min.css?t=432432423423...
Run Code Online (Sandbox Code Playgroud)

在蚂蚁我会做类似的事情

<tstamp>
  <format property="current.time" pattern="MMddyyyyhhmmssaa" offset="-5" unit="hour" />
</tstamp>

<replace dir="${deploy.path}/${name}/WEB-INF/jsp" value="login-min.css?t=${current.time}">
  <include name="includes/login_css_include.jsp" />
  <replacetoken>login-min.css</replacetoken>
</replace>
Run Code Online (Sandbox Code Playgroud)

对于gradle我已经更新了jsp页面

<link type="text/css" href="/css/@loginCSS@" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

在build.gradle中

import org.apache.tools.ant.filters.ReplaceTokens
war {
  webInf {
    from ("${webAppDir}/WEB-INF/jsp") {
      include: "/includes/login_css_include.jsp"
      filter(ReplaceTokens, tokens: [loginCSS: 'login-min.css?v=1'])
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

这个有效,但它改变了源...我只想修改战争中的文件.

import org.apache.tools.ant.filters.ReplaceTokens
war {
  webInf {
    from ("${webAppDir}/WEB-INF/jsp/includes/login_css_include.jsp") {
      it.eachFile {
        ant.replace(file: it.file, token: "@loginCSS@", value: "login-min.css?v=1")
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我是个全新的朋友,我完全不正确吗?以前有人需要这样做吗?使用gradle 1.0-milestone-1.

谢谢

Axe*_*ine 10

好的,这似乎有效:

jsp页面:

<link type="text/css" href="/css/@loginCSS@" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

build.gradle:

war {
   filter(ReplaceTokens, tokens: ['loginCSS': 'login-min.css'])
}
Run Code Online (Sandbox Code Playgroud)


Luk*_*ota 5

尝试另一种变体(它在我的案例中可以克服这个错误http://issues.gradle.org/browse/GRADLE-1566#)

war {   
   eachFile {
      if (it.name == 'yourFile.jsp') {
        it.filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [...])
      }
   }
}
Run Code Online (Sandbox Code Playgroud)