@@ -0,0 +1,2118 @@
+package lwjar.build;%0D%0A%0D%0Aimport lwjar.cli.Command;%0D%0Aimport lwjar.OutputDirectory;%0D%0Aimport lwjar.packaging.ApplicationMainClass;%0D%0Aimport lwjar.packaging.JarName;%0D%0Aimport lwjar.packaging.PackageCommand;%0D%0Aimport lwjar.packaging.SourceDirectory;%0D%0Aimport lwjar.precompile.ApplicationSourceDirectory;%0D%0Aimport lwjar.precompile.JavaSourceCompressor;%0D%0Aimport lwjar.precompile.LibraryClassDirectory;%0D%0Aimport lwjar.precompile.LibrarySourceDirectory;%0D%0Aimport lwjar.precompile.PreCompileCommand;%0D%0Aimport lwjar.primitive.Directory;%0D%0A%0D%0Aimport java.io.IOException;%0D%0A%0D%0Apublic class BuildCommand implements Command %7B%0D%0A    %0D%0A    private final PreCompileCommand preCompileCommand;%0D%0A    private final PackageCommand packageCommand;%0D%0A    %0D%0A    public BuildCommand(%0D%0A        LibrarySourceDirectory librarySourceDirectory,%0D%0A        LibraryClassDirectory libraryClassDirectory,%0D%0A        ApplicationSourceDirectory applicationSourceDirectory,%0D%0A        ApplicationMainClass applicationMainClass,%0D%0A        JarName jarName,%0D%0A        OutputDirectory outputDirectory,%0D%0A        JavaSourceCompressor.CompressLevel compressLevel,%0D%0A        Integer retryCount,%0D%0A        boolean springBoot%0D%0A    ) %7B%0D%0A        this.preCompileCommand = new PreCompileCommand(%0D%0A            librarySourceDirectory,%0D%0A            libraryClassDirectory,%0D%0A            applicationSourceDirectory,%0D%0A            outputDirectory,%0D%0A            compressLevel,%0D%0A            retryCount%0D%0A        );%0D%0A%0D%0A        Directory preCompiledDirectory = this.preCompileCommand.getPreCompiledDirectory();%0D%0A        SourceDirectory sourceDirectory = new SourceDirectory(preCompiledDirectory);%0D%0A%0D%0A        this.packageCommand = new PackageCommand(%0D%0A            sourceDirectory,%0D%0A            applicationMainClass,%0D%0A            outputDirectory,%0D%0A            jarName,%0D%0A            springBoot%0D%0A        );%0D%0A    %7D%0D%0A    %0D%0A    @Override%0D%0A    public void execute() throws IOException %7B%0D%0A        System.out.println(%22executing pre-compile command...%22);%0D%0A        this.preCompileCommand.execute();%0D%0A        %0D%0A        System.out.println(%22executing package command...%22);%0D%0A        this.packageCommand.execute();%0D%0A    %7D%0D%0A%7D%0D%0A

add BuildCommand