Jason Porter wrote:
On Wed, Nov 4, 2009 at 12:22, Hans Dockter <[email protected]> wrote:
On Nov 4, 2009, at 3:04 PM, Jason Porter wrote:

Sent from my iPhone
On Nov 4, 2009, at 4:43, Levi Hoogenberg <[email protected]> wrote:

Hi Jason,

I don't know if it's the Gradle way, but in one of my projects' build.gradle
I have the following:

processResources {
    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [version:
project.version])
}

This replaces @version@ in a property file, so that it can be read from the
code.

The processResources task is of type Copy.
See
Javadoc: 
http://gradle.org/0.8/docs/javadoc/index.html?org/gradle/api/tasks/Copy.html
What you could do in your case:
Properties props = new Props()
props.load(...)
copy {
   from 'path_to_file_to_be_filtered'
   into ...
   props.each { key, value ->
      filter(ReplaceTokens, tokens: props) // It depends on you set up if
this is exactly what you want.
   }
}
- Hans
--
Hans Dockter
Gradle Project Manager
http://www.gradle.org

Thans Hans, that's very, very close to what I want to do.  I guess
what I really want is a way to filter files before they're added to an
artifact (in this case the war).  For example I need to replace a
context-param in my web.xml based on the environment I'll be deploying
to (dev, qa, prod, etc).  I could copy out that new file to a
different location and modify the war task.  If this is the only way
to do it, okay cool.  However, filtering while building an archive
would be awesome.

You can do this in trunk now, as the archive tasks now have the same API as the copy task (more on this in another email, soon). You can do something like:

war {
   webInf {
       from 'path.to.file.or.dir'
       filter(ReplaceTokens, tokens: [some: map])
   }
}


  It doesn't look like ant this though, and gradle
may not either (as it's using the ant tasks for this I believe).

Regards,
  Levi

On Wed, Nov 4, 2009 at 7:46 AM, Jason Porter <[email protected]>
wrote:
In a war I've got I'd like to filter a file that ultimately ends up in
the WEB-INF directory (chances are I'll just put it here under
webapp/WEB-INF anyway), but I want to replace some tokens in it
(preferably with items that exist in a properties file).  I know how
I'd do this in ant, but what's the gradle way of doing it?

--
Jason Porter
Real Programmers think better when playing Adventure or Rogue.

PGP key id: 926CCFF5
PGP fingerprint: 64C2 C078 13A9 5B23 7738 F7E5 1046 C39B 926C CFF5
PGP key available at: keyserver.net, pgp.mit.edu

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


That would work fine, but I don't want to list the tokens and their values
in the build file. I'd rather have them pulled from a properties file (so it
can change from box / environment). Think stuff like user names and
passwords, external locations, etc.





--
Adam Murdoch
Gradle Developer
http://www.gradle.org

Reply via email to