diff --git a/platform/build-scripts/groovy/org/jetbrains/intellij/build/CommunityLibraryLicenses.groovy b/platform/build-scripts/groovy/org/jetbrains/intellij/build/CommunityLibraryLicenses.groovy index b57b4b150de9..9d5bd66b06f3 100644 --- a/platform/build-scripts/groovy/org/jetbrains/intellij/build/CommunityLibraryLicenses.groovy +++ b/platform/build-scripts/groovy/org/jetbrains/intellij/build/CommunityLibraryLicenses.groovy @@ -247,6 +247,8 @@ class CommunityLibraryLicenses { license: "Apache 2.0", url: "https://groovy-lang.org/"), new LibraryLicense(name: "Groovy Ant", libraryName: "org.codehaus.groovy:groovy-ant", license: "Apache 2.0", url: "https://groovy-lang.org/"), + new LibraryLicense(name: "Groovy CLI Commons", libraryName: "org.codehaus.groovy:groovy-cli-commons", + license: "Apache 2.0", url: "https://groovy-lang.org/"), new LibraryLicense(name: "Groovy JSON", libraryName: "org.codehaus.groovy:groovy-json", license: "Apache 2.0", url: "https://groovy-lang.org/"), new LibraryLicense(name: "Groovy JSR-223", libraryName: "org.codehaus.groovy:groovy-jsr223", diff --git a/platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml b/platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml index eac94def2eab..21200c4c8591 100644 --- a/platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml +++ b/platform/build-scripts/intellij.tools.jps.buildScriptDependencies.iml @@ -27,6 +27,16 @@ + + + + + + + + + + diff --git a/plugins/devkit/devkit-core/src/actions/updateFromSources/UpdateIdeFromSourcesAction.kt b/plugins/devkit/devkit-core/src/actions/updateFromSources/UpdateIdeFromSourcesAction.kt index 34c25f7db643..8cdc3e8d9379 100644 --- a/plugins/devkit/devkit-core/src/actions/updateFromSources/UpdateIdeFromSourcesAction.kt +++ b/plugins/devkit/devkit-core/src/actions/updateFromSources/UpdateIdeFromSourcesAction.kt @@ -23,13 +23,16 @@ import com.intellij.openapi.project.DumbService import com.intellij.openapi.project.IndexNotReadyException import com.intellij.openapi.project.Project import com.intellij.openapi.roots.OrderEnumerator +import com.intellij.openapi.roots.OrderRootType import com.intellij.openapi.roots.ProjectRootManager +import com.intellij.openapi.roots.libraries.LibraryUtil import com.intellij.openapi.ui.Messages import com.intellij.openapi.util.Key import com.intellij.openapi.util.SystemInfo import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.io.systemIndependentPath import com.intellij.task.ProjectTaskManager +import com.intellij.util.PathUtil import com.intellij.util.Restarter import com.intellij.util.SystemProperties import org.jetbrains.idea.devkit.util.PsiUtil @@ -290,17 +293,6 @@ internal open class UpdateIdeFromSourcesAction params.isUseClasspathJar = true params.setDefaultCharset(project) params.jdk = sdk - //todo use org.jetbrains.idea.maven.utils.MavenUtil.resolveLocalRepository instead - val m2Repo = File(SystemProperties.getUserHome(), ".m2/repository").systemIndependentPath - - //todo get from project configuration - val coreClassPath = listOf( - "$m2Repo/org/codehaus/groovy/groovy-all/2.4.17/groovy-all-2.4.17.jar", - "$m2Repo/commons-cli/commons-cli/1.2/commons-cli-1.2.jar", - "$devIdeaHome/community/lib/ant/lib/ant.jar", - "$devIdeaHome/community/lib/ant/lib/ant-launcher.jar" - ) - params.classPath.addAll(coreClassPath) params.mainClass = "org.codehaus.groovy.tools.GroovyStarter" params.programParametersList.add("--classpath") @@ -312,7 +304,20 @@ internal open class UpdateIdeFromSourcesAction } val classpath = OrderEnumerator.orderEntries(buildScriptsModule) .recursively().withoutSdk().runtimeOnly().productionOnly().classes().pathsList + + val classesFromCoreJars = listOf( + params.mainClass, + "org.apache.tools.ant.BuildException", //ant + "org.apache.tools.ant.launch.AntMain", //ant-launcher + "org.apache.commons.cli.ParseException", //commons-cli + "groovy.util.CliBuilder" //groovy-cli-commons + ) + val coreClassPath = classpath.rootDirs.filter { root -> + classesFromCoreJars.any { LibraryUtil.isClassAvailableInLibrary(listOf(root), it) } + }.mapNotNull { PathUtil.getLocalPath(it) } + params.classPath.addAll(coreClassPath) coreClassPath.forEach { classpath.remove(FileUtil.toSystemDependentName(it)) } + params.programParametersList.add(classpath.pathsString) params.programParametersList.add("--main") params.programParametersList.add("gant.Gant")