diff --git a/pom.xml b/pom.xml index c26011c..c7e3d8b 100644 --- a/pom.xml +++ b/pom.xml @@ -82,17 +82,27 @@ compilerUltimate - org.apache.maven.plugins - maven-jar-plugin - 3.2.0 + maven-assembly-plugin + 3.3.0 + + jar-with-dependencies + - de.maishai.Main + de.maishai.Compiler - ${project.build.directory} + + + make-assembly + package + + single + + + diff --git a/src/main/java/de/maishai/Compiler.java b/src/main/java/de/maishai/Compiler.java index 91a8a6a..bf22061 100644 --- a/src/main/java/de/maishai/Compiler.java +++ b/src/main/java/de/maishai/Compiler.java @@ -90,15 +90,25 @@ public class Compiler { return byteCode; } - public static void generateByteCodeFileFromFile(List sourcePath, List classname) { - List bytes = generateByteCodeArrayFromFile(sourcePath); + public static void generateByteCodeFileFromFile(List sourcePaths) { + List bytes = generateByteCodeArrayFromFile(sourcePaths); for (int i = 0; i < bytes.size(); i++) { - CodeGenUtils.writeClassfile(bytes.get(i), classname.get(i)); + String targetPath = sourcePaths.get(i).replace(".java", ".class"); + CodeGenUtils.writeClassfile(bytes.get(i), targetPath); } } public static void main(String[] args) { - generateByteCodeFileFromFile(List.of("src/test/testFiles/JavaTestfilesMore/ClassCanBeBytecoded.java"), - List.of("ClassCanBeBytecoded")); + if (args.length < 1) { + System.out.println("Please provide the Java files to compile as command line arguments."); + return; + } + + List sourcePaths = new ArrayList<>(); + for (String arg : args) { + String sourcePath = arg.endsWith(".java") ? arg : arg + ".java"; + sourcePaths.add(sourcePath); + } + generateByteCodeFileFromFile(sourcePaths); } } diff --git a/src/main/java/de/maishai/typedast/CodeGenUtils.java b/src/main/java/de/maishai/typedast/CodeGenUtils.java index dc5ed5f..6353d6e 100644 --- a/src/main/java/de/maishai/typedast/CodeGenUtils.java +++ b/src/main/java/de/maishai/typedast/CodeGenUtils.java @@ -1,8 +1,5 @@ package de.maishai.typedast; -import de.maishai.typedast.typedclass.TypedParameter; -import org.objectweb.asm.ClassWriter; - import java.io.FileOutputStream; import java.util.List; @@ -21,9 +18,9 @@ public class CodeGenUtils { return builder.toString(); } - public static void writeClassfile(byte[] code, String name) { + public static void writeClassfile(byte[] code, String targetPath) { try { - FileOutputStream fos = new FileOutputStream("output/" + name + ".class"); + FileOutputStream fos = new FileOutputStream(targetPath); fos.write(code); fos.close(); } catch (java.io.IOException e) {