An way to escape $'s should certainly be provided.
But further, as the original poster suggested, there should be a way to configure what the token format is. Here is a use case for providing this:
I am using the resources plugin to copy over a bunch of JBoss config files. If you've used JBoss, you know that it supports runtime replacement of ${foo} tokens with system properties. So, in most cases, I don't want Maven messing with the ${foo} tokens in these files. However, there are a handful of tokens I do want Maven to replace. If I could change the token format to something other than the ${foo} default, then I could use that alternate format for the tokens I do want Maven to replace.
Here's an example of how this might be specified in the POM:
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<tokenStartDelimiter>@@</tokenStartDelimiter>
<tokenEndDelimiter>@@</tokenEndDelimiter>
</resource>
...
</resources>
This would tell the resources plugin to replace tokens of the form @@foo@@ instead of the default form ${foo}.
If others could benefit from this feature, say so. If there's enough interest, I'll whip up a patch.
Actually, your workaround works with the current maven-resources-plugin.
maven-resources-plugin supports two token formats: %{token} , and @token@