@@ -0,0 +1,1333 @@
+package com.github.igorsuhorukov.groovy.executor;%0A%0Aimport com.github.igorsuhorukov.smreed.dropship.Dropship;%0A%0Aimport java.io.Serializable;%0Aimport java.util.Map;%0A%0Aimport static com.github.igorsuhorukov.google.common.base.Ascii.checkArgument;%0Aimport static com.github.igorsuhorukov.google.common.base.Ascii.checkNotNull;%0A%0Apublic class DropshipRunnable implements Runnable, Serializable%7B%0A%0A    private String%5B%5D args;%0A    private Map%3CString, String%3E systemProperties;%0A%0A    public DropshipRunnable(String... args) %7B%0A        args = checkNotNull(args);%0A        checkArgument(args.length %3E= 2, %22Must specify groupId:artifactId%5B:version%5D and classname!%22);%0A        this.args = args;%0A    %7D%0A%0A    public DropshipRunnable(Map%3CString, String%3E systemProperties, String... args) %7B%0A        this(args);%0A        this.systemProperties = systemProperties;%0A    %7D%0A%0A    public void run() %7B%0A        setSystemProperties();%0A        try %7B%0A            Dropship.main(args);%0A        %7D catch (Exception e) %7B%0A            throw new RuntimeException(e);%0A        %7D%0A    %7D%0A%0A    private void setSystemProperties() %7B%0A        if(systemProperties!=null && !systemProperties.isEmpty()) %7B%0A            for(Map.Entry%3CString, String%3E property: systemProperties.entrySet())%7B%0A                System.setProperty(property.getKey(), property.getValue());%0A            %7D%0A        %7D%0A    %7D%0A%7D%0A

allow user execute Dropship main method by using ExecutorService