50 return this; 51 } 52 53 public JarBuilder addSourceFile(Path v) { 54 sourceFiles.add(v); 55 return this; 56 } 57 58 public JarBuilder setModuleVersion(String v) { 59 moduleVersion = v; 60 return this; 61 } 62 63 public void create() { 64 TKit.withTempDirectory("jar-workdir", workDir -> { 65 if (!sourceFiles.isEmpty()) { 66 new Executor() 67 .setToolProvider(JavaTool.JAVAC) 68 .addArguments("-d", workDir.toString()) 69 .addPathArguments(sourceFiles) 70 .execute().assertExitCodeIsZero(); 71 } 72 73 Files.createDirectories(outputJar.getParent()); 74 if (Files.exists(outputJar)) { 75 TKit.trace(String.format("Delete [%s] existing jar file", outputJar)); 76 Files.deleteIfExists(outputJar); 77 } 78 79 Executor jarExe = new Executor() 80 .setToolProvider(JavaTool.JAR) 81 .addArguments("-c", "-f", outputJar.toString()); 82 if (moduleVersion != null) { 83 jarExe.addArguments(String.format("--module-version=%s", 84 moduleVersion)); 85 } 86 if (mainClass != null) { 87 jarExe.addArguments("-e", mainClass); 88 } 89 jarExe.addArguments("-C", workDir.toString(), "."); 90 jarExe.execute().assertExitCodeIsZero(); 91 }); 92 } 93 private List<Path> sourceFiles; 94 private Path outputJar; 95 private String mainClass; 96 private String moduleVersion; 97 } | 50 return this; 51 } 52 53 public JarBuilder addSourceFile(Path v) { 54 sourceFiles.add(v); 55 return this; 56 } 57 58 public JarBuilder setModuleVersion(String v) { 59 moduleVersion = v; 60 return this; 61 } 62 63 public void create() { 64 TKit.withTempDirectory("jar-workdir", workDir -> { 65 if (!sourceFiles.isEmpty()) { 66 new Executor() 67 .setToolProvider(JavaTool.JAVAC) 68 .addArguments("-d", workDir.toString()) 69 .addPathArguments(sourceFiles) 70 .execute(); 71 } 72 73 Files.createDirectories(outputJar.getParent()); 74 if (Files.exists(outputJar)) { 75 TKit.trace(String.format("Delete [%s] existing jar file", outputJar)); 76 Files.deleteIfExists(outputJar); 77 } 78 79 Executor jarExe = new Executor() 80 .setToolProvider(JavaTool.JAR) 81 .addArguments("-c", "-f", outputJar.toString()); 82 if (moduleVersion != null) { 83 jarExe.addArguments(String.format("--module-version=%s", 84 moduleVersion)); 85 } 86 if (mainClass != null) { 87 jarExe.addArguments("-e", mainClass); 88 } 89 jarExe.addArguments("-C", workDir.toString(), "."); 90 jarExe.execute(); 91 }); 92 } 93 private List<Path> sourceFiles; 94 private Path outputJar; 95 private String mainClass; 96 private String moduleVersion; 97 } |