I want to copy text files and only text files from src/
to dst/
groovy:000> "cp src/*.txt dst/".execute().text ===> groovy:000>
You can see the command executes w/out error but the file src/test.txt
does not get copied to dst/
This also fails:
groovy:000> "cp src/* dst/".execute().text ===> groovy:000>
However...
"cp src/this.txt dst/".execute().text
works
Also,
"cp -R src/ dst".execute().text
works
Why dose the wild card seem to cause my command to silently fail?
Executing shell commands using Groovy is very easy. For example If you want to execute any unix/linux command using groovy that can be done using execute() method and to see the output of the executed command we can append text after it.
A Groovy shell is a command-line application that lets you evaluate Groovy expressions, functions, define classes and run Groovy commands. The Groovy shell can be launched in Groovy projects.
The 'cmd /c' at the start invokes the Windows command shell. Since mvn. bat is a batch script you need this. For Unix you can invoke the system shell.
Thanks tedu for getting me half way there.
I believe the reason that his solution didn't work was because of an 'escaping' issue.
For instance...
"sh -c 'ls'".execute()
works. But...
"sh -c 'ls '".execute()
does not.
There is probably a way to escape it properly in line there but the workaround I'm using is to pass a string array to Runtime.getRuntime().exec
command = ["sh", "-c", "cp src/*.txt dst/"] Runtime.getRuntime().exec((String[]) command.toArray())
works beautifully!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With