On Nov 10, 2009, at 3:01 PM, Narco wrote:


Yes, it works. However, I don`t see any improvements of copying task from gradle. It doesn`t support even filtersfile and overwrite attributes. I`m
going to use normal project.ant instead... Why not?

Ant is our friend. I don't see fundamental issues with using it. But Gradle's copy has important advantages depending on your use case.

- It can accept Gradle's file system abstractions:

copy {
   from configurations.runtime
}

- I really like the nested way of doing things and the syntax.
- You can copy subsets from archive and the archives will be never be temporarily unpacked but only streamed.
- You can set file permissions (depending on the context)
- It is an common pattern used for copying into the file system as well as filling an archive (in 0.9).
- We will listen to our user's and add the missing bits soon ;)

What is not working for me is replacing tokens in target folder without copying. "Copy" seems simply skipping task when source and target is the
same.

Could you file a Jira?

- Hans

--
Hans Dockter
Gradle Project Manager
http://www.gradle.org

If Gradle could do that it will give performance and simpler scripts.


Steve Appling wrote:

Sorry, I had only looked at the ant ReplaceTokens documentation and not at
the
source. It does not support a setPropertiesfile method to allow access to
this
feature :(

But (again without having tried this myself) perhaps this is sufficient:

 Properties props = new Props()
 props.load(...)

 copy {
    from 'path_to_file_to_be_filtered'
    into ...
    filter(ReplaceTokens, tokens: props)
 }

I'm not clear why Hans had a props.each surrounding the filter in his
example.

Narco wrote:
on gradle0.8 filter(ReplaceTokens, propertiesfile:
'mysettings.properties')
gives:
Cause: Error - Invalid filter specification for
org.apache.tools.ant.filters.ReplaceTokens


Steve Appling wrote:


Hans Dockter 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]
<mailto:[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
I haven't tried this, but I think the ReplaceTokens filter can read from
a
properties file all by itself so you can do:
copy {
    from 'path_to_file_to_be_filtered'
    into ...
    filter(ReplaceTokens, propertiesfile: 'mysettings.properties')
}


Regards,
 Levi

On Wed, Nov 4, 2009 at 7:46 AM, Jason Porter <
<http://lightguard.jp/>lightguard.jp <http://lightguard.jp/>@
<http://gmail.com/>gmail.com <http://gmail.com/>> 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: <http://keyserver.net/>keyserver.net
   <http://keyserver.net/>, <http://pgp.mit.edu/>pgp.mit.edu
   <http://pgp.mit.edu/>


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



<http://xircles.codehaus.org/manage_email>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.
--
Steve Appling
Automated Logic Research Team

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

   http://xircles.codehaus.org/manage_email






--
Steve Appling
Automated Logic Research Team

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

   http://xircles.codehaus.org/manage_email





--
View this message in context: 
http://old.nabble.com/How-to-do-a-copy-filter-the-gradle-way--tp26191753p26283890.html
Sent from the gradle-user mailing list archive at Nabble.com.


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

   http://xircles.codehaus.org/manage_email




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

   http://xircles.codehaus.org/manage_email


Reply via email to