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);
+ }
}
}
}