60 return this; |
60 return this; |
61 } |
61 } |
62 |
62 |
63 public void create() { |
63 public void create() { |
64 TKit.withTempDirectory("jar-workdir", workDir -> { |
64 TKit.withTempDirectory("jar-workdir", workDir -> { |
65 Executor.Result javacReply = new Executor() |
65 if (!sourceFiles.isEmpty()) { |
66 .setExecutable(JavaTool.JAVAC) |
66 new Executor() |
67 .addArguments("-d", workDir.toString()) |
67 .setToolProvider(JavaTool.JAVAC) |
68 .addPathArguments(sourceFiles).execute(); |
68 .addArguments("-d", workDir.toString()) |
69 javacReply.assertExitCodeIsZero(); |
69 .addPathArguments(sourceFiles) |
|
70 .execute().assertExitCodeIsZero(); |
|
71 } |
70 Path tmpJar = workDir.resolve("foo.jar"); |
72 Path tmpJar = workDir.resolve("foo.jar"); |
71 Executor jarExe = new Executor(); |
73 Executor jarExe = new Executor(); |
72 jarExe.setExecutable(JavaTool.JAR).addArguments("-c", "-v", "-f", |
74 jarExe.setToolProvider(JavaTool.JAR).addArguments("-c", "-f", tmpJar.toString()); |
73 tmpJar.toString()); |
|
74 if (moduleVersion != null) { |
75 if (moduleVersion != null) { |
75 jarExe.addArguments(String.format("--module-version=%s", |
76 jarExe.addArguments(String.format("--module-version=%s", |
76 moduleVersion)); |
77 moduleVersion)); |
77 } |
78 } |
78 if (mainClass != null) { |
79 if (mainClass != null) { |
79 jarExe.addArguments("-e", mainClass); |
80 jarExe.addArguments("-e", mainClass); |
80 } |
81 } |
81 jarExe.addArguments("-C", workDir.toString(), "."); |
82 jarExe.addArguments("-C", workDir.toString(), "."); |
82 javacReply = jarExe.execute(); |
83 jarExe.execute().assertExitCodeIsZero(); |
83 javacReply.assertExitCodeIsZero(); |
|
84 outputJar.getParentFile().mkdirs(); |
84 outputJar.getParentFile().mkdirs(); |
85 Files.copy(tmpJar, outputJar.toPath(), REPLACE_EXISTING); |
85 Files.copy(tmpJar, outputJar.toPath(), REPLACE_EXISTING); |
86 }); |
86 }); |
87 } |
87 } |
88 private List<Path> sourceFiles; |
88 private List<Path> sourceFiles; |