diff --git a/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java b/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java index 3c688f5d774..3d77412d38d 100644 --- a/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java +++ b/build-tools/core/src/org/jetbrains/jet/buildtools/core/BytecodeCompiler.java @@ -90,6 +90,6 @@ public class BytecodeCompiler { * @param classpath compilation classpath, can be null or empty */ public void moduleToJar ( String module, String jar, boolean includeRuntime, String stdlib, String[] classpath ) { - env( stdlib, classpath ).compileModuleScript( module, jar, includeRuntime ); + env( stdlib, classpath ).compileModuleScript( module, jar, null, includeRuntime ); } } diff --git a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java index 0cebe6264fb..91a931ea40d 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java @@ -100,7 +100,7 @@ public class KotlinCompiler { } if (arguments.module != null) { - environment.compileModuleScript(arguments.module, arguments.jar, arguments.includeRuntime); + environment.compileModuleScript(arguments.module, arguments.jar, arguments.outputDir, arguments.includeRuntime); return 0; } else { diff --git a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java index 91737a01a23..fbf4951774e 100644 --- a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java +++ b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java @@ -130,7 +130,7 @@ public class CompileEnvironment { return null; } - public void compileModuleScript(String moduleFile, String jarPath, boolean jarRuntime) { + public void compileModuleScript(String moduleFile, @Nullable String jarPath, @Nullable String outputDir, boolean jarRuntime) { final List modules = loadModuleScript(moduleFile); if (modules == null) { @@ -144,11 +144,16 @@ public class CompileEnvironment { final String directory = new File(moduleFile).getParent(); for (Module moduleBuilder : modules) { ClassFileFactory moduleFactory = compileModule(moduleBuilder, directory); - final String path = jarPath != null ? jarPath : new File(directory, moduleBuilder.getModuleName() + ".jar").getPath(); - try { - writeToJar(moduleFactory, new FileOutputStream(path), null, jarRuntime); - } catch (FileNotFoundException e) { - throw new CompileEnvironmentException("Invalid jar path " + path, e); + if (outputDir != null) { + writeToOutputDirectory(moduleFactory, outputDir); + } + else { + String path = jarPath != null ? jarPath : new File(directory, moduleBuilder.getModuleName() + ".jar").getPath(); + try { + writeToJar(moduleFactory, new FileOutputStream(path), null, jarRuntime); + } catch (FileNotFoundException e) { + throw new CompileEnvironmentException("Invalid jar path " + path, e); + } } } }