// Copyright 2014 Pants project contributors (see CONTRIBUTORS.md). // Licensed under the Apache License, Version 2.0 (see LICENSE). package com.twitter.intellij.pants.compiler; import com.intellij.compiler.server.BuildProcessParametersProvider; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.externalSystem.model.ExternalSystemException; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.containers.ContainerUtil; import com.twitter.intellij.pants.jps.incremental.serialization.PantsJpsModelSerializerExtension; import com.twitter.intellij.pants.util.PantsUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.cmdline.ClasspathBootstrap; import java.util.List; public class PantsBuildProcessParametersProvider extends BuildProcessParametersProvider { @NotNull @Override public List<String> getClassPath() { // Hack to provide additional classpath to compilation process // in BuildManager. See scripts/prepare-ci-environment.sh // IDEA 2016 moved `ExternalSystemException` out of `openapi.jar` and is not on the default classpaths anymore // despite staying in the same package, so we have to explicitly add it to the external builder. final List<String> classpath = ContainerUtil.newArrayList(); classpath.add(ClasspathBootstrap.getResourcePath(ExternalSystemException.class)); if (ApplicationManager.getApplication().isUnitTestMode()) { classpath.add(ClasspathBootstrap.getResourcePath(PantsUtil.class)); classpath.add(ClasspathBootstrap.getResourcePath(PantsJpsModelSerializerExtension.class)); classpath.addAll(StringUtil.split(StringUtil.notNullize(System.getProperty("pants.jps.plugin.classpath")), ":")); } return classpath; } }