diff --git a/platform/jps-bootstrap/src/main/java/org/jetbrains/jpsBootstrap/JpsBootstrapMain.kt b/platform/jps-bootstrap/src/main/java/org/jetbrains/jpsBootstrap/JpsBootstrapMain.kt index 85517d6c6208..7d15439031ee 100644 --- a/platform/jps-bootstrap/src/main/java/org/jetbrains/jpsBootstrap/JpsBootstrapMain.kt +++ b/platform/jps-bootstrap/src/main/java/org/jetbrains/jpsBootstrap/JpsBootstrapMain.kt @@ -164,6 +164,11 @@ class JpsBootstrapMain(args: Array?) { } else { writeJavaArgfile(moduleRuntimeClasspath, null) } + + val classpathFileTargetString = System.getenv(CLASSPATH_FILE_TARGET_ENV) + if (!classpathFileTargetString.isNullOrBlank()) { + writeClasspathFile(moduleRuntimeClasspath, Path.of(classpathFileTargetString)) + } } private fun removeOpenedPackage(openedPackages: MutableList, openedPackage: String, unknownPackages: MutableList) { @@ -261,6 +266,16 @@ class JpsBootstrapMain(args: Array?) { info("java argfile:\n${Files.readString(javaArgsFileTarget)}") } + @Throws(Exception::class) + private fun writeClasspathFile(moduleRuntimeClasspath: List, classpathFileTarget: Path) { + CommandLineWrapperUtil.writeArgumentsFile( + classpathFileTarget.toFile(), + moduleRuntimeClasspath.map { it.path }, + StandardCharsets.UTF_8 + ) + info("classpath file:\n${Files.readString(classpathFileTarget)}") + } + @Throws(Throwable::class) private fun downloadOrBuildClasses(module: JpsModule, model: JpsModel, kotlincHome: Path) { val fromJpsBuildEnvValue = System.getenv(JpsBuild.CLASSES_FROM_JPS_BUILD_ENV_NAME) @@ -308,6 +323,7 @@ class JpsBootstrapMain(args: Array?) { companion object { private const val DEFAULT_BUILD_SCRIPT_XMX = "4g" + private const val CLASSPATH_FILE_TARGET_ENV = "JPS_BOOTSTRAP_CLASSPATH_FILE_TARGET" private const val COMMUNITY_HOME_ENV = "JPS_BOOTSTRAP_COMMUNITY_HOME" private const val JPS_BOOTSTRAP_VERBOSE = "JPS_BOOTSTRAP_VERBOSE" private val OPT_HELP = Option.builder("h").longOpt("help").build()