Hi Alex,

running the code with one parameter per string works but you cannot have space separated words in a single String. Thank you for the hint. Below you can find the working command. It is the yahoo UI compressor which can be used to compress CSS or JavaScript files.

Java::Commands.java('-jar', "yuicompressor-2.4.2.jar", "--line-break","1000","--type","css","src/main/webapp/styles/styles-all.css",
                                                                                                
"-o", "src/main/webapp/styles/styles-all-min.css",
                                                                                   
             {:verbose=>true})
I am not sure, if this is the expected behaviour. With my change, I can concatenate any number of space separated commands in a single String. At least, I feel that this should be clearer in the documentation.


--
Best Regards / Viele Grüße

Sebastian Hennebrueder
-----
Software Developer and Trainer for Hibernate / Java Persistence
http://www.laliluna.de





Alex Boisvert schrieb:
Hi Sebastian,

I just tested on OS X (Snow Leopard) and I can't reproduce your issue.

Further, each argument should be its own array value, like "--line-break",
"1000".   And redirection won't work as you expect since this isn't a shell,
it's just a Unix exec() call.

I have a feeling you may want to reach directly for the system() call or
something along that line since Java::Commands doesn't really support
redirection.

alex


On Fri, Feb 5, 2010 at 11:21 AM, Sebastian Hennebrueder
<use...@laliluna.de>wrote:

On Mac OS I cannot execute something like
Java::Commands.java('-jar', "yuicompressor-2.4.2.jar", "--line-break 1000
--type css src/main/webapp/styles/styles-all.css",
                                              ">
src/main/webapp/styles/styles-all-min.css",
                                              {:verbose=>true})

The reason is that the parameters are not joined with a ' '
In java/commands.rb
the method       def java(*args, &block) needed the line below. Most likely
this may break thinks on Windows. The orgininal developer will probably know
how to fix it correctly.

      unless Buildr.application.options.dryrun
        info "Running #{name}"
        block = lambda { |ok, res| fail "Failed to execute #{name}, see
errors above" unless ok } unless block
        puts cmd_args.join(' ') if Buildr.application.options.trace
        cmd_args = cmd_args.map(&:inspect).join(' ') if Util.win_os?
# neeeded the next line on MAC OS
        cmd_args = cmd_args.join(' ')
# end of mac changes
        sh(*cmd_args) do |ok, ps|
          block.call ok, ps
        end
      end

--
Best Regards / Viele Grüße

Sebastian Hennebrueder
-----
Software Developer and Trainer for Hibernate / Java Persistence
http://www.laliluna.de







Reply via email to