split content report

GitOrigin-RevId: ef449bdf4c5480a6ee3ce43b4af118c2c6e31219
This commit is contained in:
Vladimir Krivosheev
2024-07-25 08:52:02 +02:00
committed by intellij-monorepo-bot
parent 3bd32f51f1
commit 398ebce1d5
110 changed files with 1805 additions and 116 deletions

View File

@@ -0,0 +1,3 @@
- name: lib/platform-images.jar
modules:
- name: intellij.platform.images

View File

@@ -0,0 +1,3 @@
- name: lib/java-ide-customization.jar
modules:
- name: intellij.java.ide.customization

View File

@@ -0,0 +1,136 @@
- name: lib/aether-dependency-resolver.jar
modules:
- name: intellij.java.aetherDependencyResolver
- name: lib/client/java-frontend.jar
modules:
- name: intellij.java.frontend
- name: lib/debugger-memory-agent.jar
- name: lib/ecj/eclipse.jar
projectLibraries:
- name: Eclipse
files:
- name: $PROJECT_DIR$/community/lib/ecj-4.jar
reason: withProjectLibrary
- name: lib/java-frontback.jar
modules:
- name: intellij.java.frontback.impl
- name: intellij.java.frontback.psi
- name: intellij.java.frontback.psi.impl
- name: lib/java-impl.jar
modules:
- name: intellij.java
- name: intellij.java.analysis
- name: intellij.java.analysis.impl
- name: intellij.java.compiler
- name: intellij.java.compiler.impl
- name: intellij.java.debugger
- name: intellij.java.debugger.impl
- name: intellij.java.debugger.memory.agent
- name: intellij.java.duplicates
- name: intellij.java.duplicates.analysis
- name: intellij.java.duplicatesDetection
- name: intellij.java.execution
- name: intellij.java.execution.impl
- name: intellij.java.impl
libraries:
completion-ranking-java:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-java/0/completion-ranking-java-0.jar
- name: intellij.java.impl.inspections
- name: intellij.java.impl.refactorings
- name: intellij.java.indexing
- name: intellij.java.indexing.impl
- name: intellij.java.jam
- name: intellij.java.jam.impl
- name: intellij.java.manifest
- name: intellij.java.plugin
- name: intellij.java.psi
- name: intellij.java.psi.impl
- name: intellij.java.remoteServers
- name: intellij.java.remoteServers.impl
- name: intellij.java.resources
reason: <- intellij.java.plugin
- name: intellij.java.resources.en
reason: <- intellij.java.plugin
- name: intellij.java.structureView
- name: intellij.java.typeMigration
- name: intellij.java.uast
- name: intellij.java.uast.ide
- name: intellij.java.ui
- name: intellij.jsp
- name: intellij.jsp.spi
- name: intellij.jvm.analysis
- name: intellij.jvm.analysis.impl
- name: intellij.jvm.analysis.quickFix
- name: intellij.jvm.analysis.refactoring
- name: intellij.platform.uast
- name: intellij.platform.uast.ide
- name: intellij.uiDesigner
contentModules:
- name: intellij.java.compiler.charts
- name: intellij.java.performancePlugin
- name: lib/javac2.jar
modules:
- name: intellij.java.compiler.antTasks
- name: intellij.java.compiler.instrumentationUtil
- name: intellij.java.compiler.instrumentationUtil.java8
- name: intellij.java.guiForms.compiler
- name: lib/jb-jdi.jar
projectLibraries:
- name: jb-jdi
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/jb-jdi/2/jb-jdi-2.jar
reason: withProjectLibrary
- name: lib/jetbrains.kotlinx.metadata.jvm.jar
projectLibraries:
- name: jetbrains.kotlinx.metadata.jvm
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-metadata-jvm/0/kotlinx-metadata-jvm-0.jar
reason: withProjectLibrary
- name: lib/jgoodies-common.jar
projectLibraries:
- name: jgoodies-common
files:
- name: $MAVEN_REPOSITORY$/com/jgoodies/jgoodies-common/1/jgoodies-common-1.jar
reason: withProjectLibrary
- name: lib/jps-builders-6.jar
modules:
- name: intellij.platform.jps.build.javac.rt
- name: lib/jps-builders.jar
modules:
- name: intellij.platform.jps.build
libraries:
qdox-java-parser:
- name: $MAVEN_REPOSITORY$/com/thoughtworks/qdox/qdox/2/qdox-2.jar
- name: lib/jps-javac-extension.jar
projectLibraries:
- name: jps-javac-extension
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/jps/jps-javac-extension/9/jps-javac-extension-9.jar
reason: withProjectLibrary
- name: lib/jps-launcher.jar
modules:
- name: intellij.platform.jps.build.launcher
- name: lib/jps/java-compiler-charts-jps.jar
modules:
- name: intellij.java.compiler.charts.jps
- name: lib/jshell-frontend.jar
- name: lib/jshell-protocol.jar
modules:
- name: intellij.java.jshell.protocol
- name: lib/maven-resolver-connector-basic.jar
- name: lib/maven-resolver-transport-file.jar
- name: lib/maven-resolver-transport-http.jar
- name: lib/modules/intellij.java.featuresTrainer.jar
contentModules:
- name: intellij.java.featuresTrainer
- name: lib/modules/intellij.java.structuralSearch.jar
contentModules:
- name: intellij.java.structuralSearch
- name: lib/modules/intellij.java.unscramble.jar
contentModules:
- name: intellij.java.unscramble
- name: lib/modules/intellij.java.vcs.jar
contentModules:
- name: intellij.java.vcs
- name: lib/rt/debugger-agent.jar
- name: lib/sa-jdwp.jar

View File

@@ -234,10 +234,11 @@
<orderEntry type="library" name="jbr-api" level="project" /> <orderEntry type="library" name="jbr-api" level="project" />
<orderEntry type="library" name="kotlinx-serialization-protobuf" level="project" /> <orderEntry type="library" name="kotlinx-serialization-protobuf" level="project" />
<orderEntry type="library" scope="RUNTIME" name="jackson-module-kotlin" level="project" /> <orderEntry type="library" scope="RUNTIME" name="jackson-module-kotlin" level="project" />
<orderEntry type="library" scope="RUNTIME" name="jackson-dataformat-yaml" level="project" /> <orderEntry type="library" name="jackson-dataformat-yaml" level="project" />
<orderEntry type="library" name="ion" level="project" /> <orderEntry type="library" name="ion" level="project" />
<orderEntry type="module" module-name="intellij.platform.boot" /> <orderEntry type="module" module-name="intellij.platform.boot" />
<orderEntry type="module" module-name="intellij.platform.ijent.community.buildConstants" /> <orderEntry type="module" module-name="intellij.platform.ijent.community.buildConstants" />
<orderEntry type="library" name="ktor-client-core" level="project" /> <orderEntry type="library" name="ktor-client-core" level="project" />
<orderEntry type="library" name="snakeyaml" level="project" />
</component> </component>
</module> </module>

View File

@@ -161,6 +161,7 @@ fun reorderJar(jarFile: Path, orderedNames: List<String>) {
internal data class PluginBuildDescriptor( internal data class PluginBuildDescriptor(
@JvmField val dir: Path, @JvmField val dir: Path,
@JvmField val os: OsFamily?,
@JvmField val layout: PluginLayout, @JvmField val layout: PluginLayout,
@JvmField val moduleNames: List<String>, @JvmField val moduleNames: List<String>,
) )

View File

@@ -5,9 +5,7 @@ package org.jetbrains.intellij.build.dev
import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope
import io.opentelemetry.api.common.AttributeKey import io.opentelemetry.api.common.AttributeKey
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import org.jetbrains.intellij.build.BuildContext import org.jetbrains.intellij.build.BuildContext
import org.jetbrains.intellij.build.PluginBuildDescriptor import org.jetbrains.intellij.build.PluginBuildDescriptor
import org.jetbrains.intellij.build.SearchableOptionSetDescriptor import org.jetbrains.intellij.build.SearchableOptionSetDescriptor
@@ -34,6 +32,7 @@ internal suspend fun buildPlugins(
context = context, context = context,
buildPlatformJob = buildPlatformJob, buildPlatformJob = buildPlatformJob,
searchableOptionSet = searchableOptionSet, searchableOptionSet = searchableOptionSet,
os = null,
) )
} }
} }

View File

@@ -21,8 +21,8 @@ import org.jetbrains.intellij.build.impl.productInfo.PRODUCT_INFO_FILE_NAME
import org.jetbrains.intellij.build.impl.productInfo.ProductInfoLaunchData import org.jetbrains.intellij.build.impl.productInfo.ProductInfoLaunchData
import org.jetbrains.intellij.build.impl.productInfo.checkInArchive import org.jetbrains.intellij.build.impl.productInfo.checkInArchive
import org.jetbrains.intellij.build.impl.productInfo.generateProductInfoJson import org.jetbrains.intellij.build.impl.productInfo.generateProductInfoJson
import org.jetbrains.intellij.build.impl.projectStructureMapping.DistributionFileEntry import org.jetbrains.intellij.build.impl.projectStructureMapping.ContentReport
import org.jetbrains.intellij.build.impl.projectStructureMapping.includedModules import org.jetbrains.intellij.build.impl.projectStructureMapping.getIncludedModules
import org.jetbrains.intellij.build.impl.projectStructureMapping.writeProjectStructureReport import org.jetbrains.intellij.build.impl.projectStructureMapping.writeProjectStructureReport
import org.jetbrains.intellij.build.impl.sbom.SoftwareBillOfMaterialsImpl import org.jetbrains.intellij.build.impl.sbom.SoftwareBillOfMaterialsImpl
import org.jetbrains.intellij.build.io.* import org.jetbrains.intellij.build.io.*
@@ -36,7 +36,6 @@ import java.nio.file.attribute.PosixFilePermission
import java.util.* import java.util.*
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import java.util.zip.Deflater import java.util.zip.Deflater
import kotlin.io.NoSuchFileException
internal const val PROPERTIES_FILE_NAME: String = "idea.properties" internal const val PROPERTIES_FILE_NAME: String = "idea.properties"
@@ -118,8 +117,8 @@ internal class BuildTasksImpl(private val context: BuildContextImpl) : BuildTask
* Generates a JSON file containing mapping between files in the product distribution and modules and libraries in the project configuration * Generates a JSON file containing mapping between files in the product distribution and modules and libraries in the project configuration
*/ */
suspend fun generateProjectStructureMapping(targetFile: Path, context: BuildContext) { suspend fun generateProjectStructureMapping(targetFile: Path, context: BuildContext) {
val entries = generateProjectStructureMapping(context = context, platformLayout = createPlatformLayout(context = context)) val report = generateProjectStructureMapping(context = context, platformLayout = createPlatformLayout(context = context))
writeProjectStructureReport(entries = entries.first + entries.second, file = targetFile, buildPaths = context.paths) writeProjectStructureReport(contentReport = report, file = targetFile, buildPaths = context.paths)
} }
data class SupportedDistribution(@JvmField val os: OsFamily, @JvmField val arch: JvmArchitecture) data class SupportedDistribution(@JvmField val os: OsFamily, @JvmField val arch: JvmArchitecture)
@@ -342,10 +341,10 @@ private fun checkProjectLibraries(names: Collection<String>, fieldName: String,
} }
} }
private suspend fun buildSourcesArchive(entries: List<DistributionFileEntry>, context: BuildContext) { private suspend fun buildSourcesArchive(contentReport: ContentReport, context: BuildContext) {
val productProperties = context.productProperties val productProperties = context.productProperties
val archiveName = "${productProperties.getBaseArtifactName(context.applicationInfo, context.buildNumber)}-sources.zip" val archiveName = "${productProperties.getBaseArtifactName(context.applicationInfo, context.buildNumber)}-sources.zip"
val openSourceModules = entries.includedModules.filter { moduleName -> val openSourceModules = getIncludedModules(contentReport.combined()).filter { moduleName ->
productProperties.includeIntoSourcesArchiveFilter.test(context.findRequiredModule(moduleName), context) productProperties.includeIntoSourcesArchiveFilter.test(context.findRequiredModule(moduleName), context)
}.toList() }.toList()
zipSourcesOfModules( zipSourcesOfModules(
@@ -479,19 +478,19 @@ suspend fun buildDistributions(context: BuildContext): Unit = spanBuilder("build
return@coroutineScope return@coroutineScope
} }
val distEntries = spanBuilder("build platform and plugin JARs").useWithScope { val contentReport = spanBuilder("build platform and plugin JARs").useWithScope {
val entries = buildDistribution(state = distributionState, context) val contentReport = buildDistribution(state = distributionState, context)
if (context.productProperties.buildSourcesArchive) { if (context.productProperties.buildSourcesArchive) {
buildSourcesArchive(entries, context) buildSourcesArchive(contentReport, context)
} }
entries contentReport
} }
layoutShared(context) layoutShared(context)
val distDirs = buildOsSpecificDistributions(context) val distDirs = buildOsSpecificDistributions(context)
launch(Dispatchers.IO) { launch(Dispatchers.IO) {
context.executeStep(spanBuilder("generate software bill of materials"), SoftwareBillOfMaterials.STEP_ID) { context.executeStep(spanBuilder("generate software bill of materials"), SoftwareBillOfMaterials.STEP_ID) {
SoftwareBillOfMaterialsImpl(context = context, distributions = distDirs, distributionFiles = distEntries).generate() SoftwareBillOfMaterialsImpl(context = context, distributions = distDirs, distributionFiles = contentReport.combined().toList()).generate()
} }
} }
if (context.productProperties.buildCrossPlatformDistribution) { if (context.productProperties.buildCrossPlatformDistribution) {

View File

@@ -57,7 +57,7 @@ internal suspend fun buildDistribution(
state: DistributionBuilderState, state: DistributionBuilderState,
context: BuildContext, context: BuildContext,
isUpdateFromSources: Boolean = false, isUpdateFromSources: Boolean = false,
): List<DistributionFileEntry> = coroutineScope { ): ContentReport = coroutineScope {
validateModuleStructure(state.platform, context) validateModuleStructure(state.platform, context)
context.productProperties.validateLayout(state.platform, context) context.productProperties.validateLayout(state.platform, context)
createBuildBrokenPluginListJob(context) createBuildBrokenPluginListJob(context)
@@ -70,7 +70,7 @@ internal suspend fun buildDistribution(
} }
val traceContext = Context.current().asContextElement() val traceContext = Context.current().asContextElement()
val entries = coroutineScope { val contentReport = coroutineScope {
// must be completed before plugin building // must be completed before plugin building
val searchableOptionSet = context.executeStep(spanBuilder("build searchable options index"), BuildOptions.SEARCHABLE_OPTIONS_INDEX_STEP) { val searchableOptionSet = context.executeStep(spanBuilder("build searchable options index"), BuildOptions.SEARCHABLE_OPTIONS_INDEX_STEP) {
buildSearchableOptions(productRunner = productRunner, context = context) buildSearchableOptions(productRunner = productRunner, context = context)
@@ -116,33 +116,37 @@ internal suspend fun buildDistribution(
context = context, context = context,
) )
buildPlatformJob.await().asSequence() + bundledPluginItems + buildNonBundledPlugins.await() ContentReport(
}.toList() platform = buildPlatformJob.await(),
bundledPlugins = bundledPluginItems,
nonBundledPlugins = buildNonBundledPlugins.await(),
)
}
coroutineScope { coroutineScope {
launch(Dispatchers.IO) { launch(Dispatchers.IO) {
spanBuilder("generate content report").useWithScope { spanBuilder("generate content report").useWithScope {
Files.createDirectories(context.paths.artifactDir) Files.createDirectories(context.paths.artifactDir)
val contentMappingJson = context.paths.artifactDir.resolve("content-mapping.json") val contentMappingJson = context.paths.artifactDir.resolve("content-mapping.json")
writeProjectStructureReport(entries = entries, file = contentMappingJson, buildPaths = context.paths) writeProjectStructureReport(contentReport = contentReport, file = contentMappingJson, buildPaths = context.paths)
val contentJson = context.paths.artifactDir.resolve("content.json") val contentReportFile = context.paths.artifactDir.resolve("content-report.zip")
Files.newOutputStream(contentJson).use { writeNewZipWithoutIndex(contentReportFile) { zipFileWriter ->
buildJarContentReport(entries = entries, out = it, buildPaths = context.paths, context = context) buildJarContentReport(contentReport = contentReport, zipFileWriter = zipFileWriter, buildPaths = context.paths, context = context)
} }
context.notifyArtifactBuilt(contentMappingJson) context.notifyArtifactBuilt(contentMappingJson)
context.notifyArtifactBuilt(contentJson) context.notifyArtifactBuilt(contentReportFile)
} }
} }
createBuildThirdPartyLibraryListJob(entries, context) createBuildThirdPartyLibraryListJob(contentReport.combined(), context)
if (context.useModularLoader || context.generateRuntimeModuleRepository) { if (context.useModularLoader || context.generateRuntimeModuleRepository) {
launch(Dispatchers.IO) { launch(Dispatchers.IO) {
spanBuilder("generate runtime module repository").useWithScope { spanBuilder("generate runtime module repository").useWithScope {
generateRuntimeModuleRepository(entries, context) generateRuntimeModuleRepository(contentReport.combined(), context)
} }
} }
} }
} }
entries contentReport
} }
private suspend fun buildBundledPluginsForAllPlatforms( private suspend fun buildBundledPluginsForAllPlatforms(
@@ -153,7 +157,7 @@ private suspend fun buildBundledPluginsForAllPlatforms(
searchableOptionSetDescriptor: SearchableOptionSetDescriptor?, searchableOptionSetDescriptor: SearchableOptionSetDescriptor?,
moduleOutputPatcher: ModuleOutputPatcher, moduleOutputPatcher: ModuleOutputPatcher,
context: BuildContext, context: BuildContext,
): List<DistributionFileEntry> { ): List<Pair<PluginBuildDescriptor, List<DistributionFileEntry>>> {
return coroutineScope { return coroutineScope {
val commonDeferred = async { val commonDeferred = async {
doBuildBundledPlugins( doBuildBundledPlugins(
@@ -197,7 +201,7 @@ private suspend fun buildBundledPluginsForAllPlatforms(
context = context, context = context,
) )
listOf(common, specific.values.flatten()) listOf(common, specific.values.flatten())
}.flatMap { list -> list.flatMap { it.second } } }.flatten()
} }
private fun writePluginInfo( private fun writePluginInfo(
@@ -296,6 +300,7 @@ private suspend fun doBuildBundledPlugins(
state = state, state = state,
context = context, context = context,
buildPlatformJob = buildPlatformJob, buildPlatformJob = buildPlatformJob,
os = null,
searchableOptionSet = searchableOptionSet, searchableOptionSet = searchableOptionSet,
) )
@@ -349,6 +354,7 @@ private suspend fun buildOsSpecificBundledPlugins(
targetDir = targetDir, targetDir = targetDir,
state = state, state = state,
context = context, context = context,
os = os,
buildPlatformJob = buildPlatformJob, buildPlatformJob = buildPlatformJob,
searchableOptionSet = searchableOptionSet, searchableOptionSet = searchableOptionSet,
) )
@@ -389,7 +395,7 @@ internal suspend fun buildNonBundledPlugins(
state: DistributionBuilderState, state: DistributionBuilderState,
searchableOptionSet: SearchableOptionSetDescriptor?, searchableOptionSet: SearchableOptionSetDescriptor?,
context: BuildContext, context: BuildContext,
): List<DistributionFileEntry> { ): List<Pair<PluginBuildDescriptor, List<DistributionFileEntry>>> {
return spanBuilder("build non-bundled plugins").setAttribute("count", pluginsToPublish.size.toLong()).useWithScope { span -> return spanBuilder("build non-bundled plugins").setAttribute("count", pluginsToPublish.size.toLong()).useWithScope { span ->
if (pluginsToPublish.isEmpty()) { if (pluginsToPublish.isEmpty()) {
return@useWithScope emptyList() return@useWithScope emptyList()
@@ -420,6 +426,7 @@ internal suspend fun buildNonBundledPlugins(
searchableOptionSet = searchableOptionSet, searchableOptionSet = searchableOptionSet,
context = context, context = context,
buildPlatformJob = buildPlatformLibJob, buildPlatformJob = buildPlatformLibJob,
os = null,
) { plugin, pluginDirOrFile -> ) { plugin, pluginDirOrFile ->
val pluginVersion = if (plugin.mainModule == BUILT_IN_HELP_MODULE_NAME) { val pluginVersion = if (plugin.mainModule == BUILT_IN_HELP_MODULE_NAME) {
context.buildNumber context.buildNumber
@@ -474,7 +481,7 @@ internal suspend fun buildNonBundledPlugins(
} }
mappings mappings
}.flatMap { it.second } }
} }
private suspend fun validatePlugin(path: Path, context: BuildContext) { private suspend fun validatePlugin(path: Path, context: BuildContext) {
@@ -521,6 +528,7 @@ private suspend fun buildHelpPlugin(
context = context, context = context,
searchableOptionSet = searchableOptionSetDescriptor, searchableOptionSet = searchableOptionSetDescriptor,
buildPlatformJob = null, buildPlatformJob = null,
os = null,
) )
zipWithCompression(targetFile = destFile, dirs = mapOf(pluginsToPublishDir.resolve(directory) to "")) zipWithCompression(targetFile = destFile, dirs = mapOf(pluginsToPublishDir.resolve(directory) to ""))
null null
@@ -528,7 +536,7 @@ private suspend fun buildHelpPlugin(
return PluginRepositorySpec(pluginZip = destFile, pluginXml = moduleOutputPatcher.getPatchedPluginXml(helpPlugin.mainModule)) return PluginRepositorySpec(pluginZip = destFile, pluginXml = moduleOutputPatcher.getPatchedPluginXml(helpPlugin.mainModule))
} }
internal suspend fun generateProjectStructureMapping(platformLayout: PlatformLayout, context: BuildContext): Pair<List<DistributionFileEntry>, List<DistributionFileEntry>> { internal suspend fun generateProjectStructureMapping(platformLayout: PlatformLayout, context: BuildContext): ContentReport {
return coroutineScope { return coroutineScope {
val moduleOutputPatcher = ModuleOutputPatcher() val moduleOutputPatcher = ModuleOutputPatcher()
val libDirLayout = async { val libDirLayout = async {
@@ -546,11 +554,11 @@ internal suspend fun generateProjectStructureMapping(platformLayout: PlatformLay
modules = context.bundledPluginModules, modules = context.bundledPluginModules,
productLayout = context.productProperties.productLayout, productLayout = context.productProperties.productLayout,
) )
val entries = mutableListOf<DistributionFileEntry>() val entries = mutableListOf<Pair<PluginBuildDescriptor, List<DistributionFileEntry>>>()
for (plugin in allPlugins) { for (plugin in allPlugins) {
if (satisfiesBundlingRequirements(plugin = plugin, osFamily = null, arch = null, context = context)) { if (satisfiesBundlingRequirements(plugin = plugin, osFamily = null, arch = null, context = context)) {
val targetDirectory = context.paths.distAllDir.resolve(PLUGINS_DIRECTORY).resolve(plugin.directoryName) val targetDirectory = context.paths.distAllDir.resolve(PLUGINS_DIRECTORY).resolve(plugin.directoryName)
entries.addAll(layoutDistribution( entries.add(PluginBuildDescriptor(dir = targetDirectory, layout = plugin, os = null, moduleNames = emptyList()) to layoutDistribution(
layout = plugin, layout = plugin,
platformLayout = platformLayout, platformLayout = platformLayout,
targetDirectory = targetDirectory, targetDirectory = targetDirectory,
@@ -562,13 +570,14 @@ internal suspend fun generateProjectStructureMapping(platformLayout: PlatformLay
).first) ).first)
} }
} }
libDirLayout.await() to entries ContentReport(platform = libDirLayout.await(), bundledPlugins = entries, nonBundledPlugins = emptyList())
} }
} }
internal suspend fun buildPlugins( internal suspend fun buildPlugins(
moduleOutputPatcher: ModuleOutputPatcher, moduleOutputPatcher: ModuleOutputPatcher,
plugins: Collection<PluginLayout>, plugins: Collection<PluginLayout>,
os: OsFamily?,
targetDir: Path, targetDir: Path,
state: DistributionBuilderState, state: DistributionBuilderState,
context: BuildContext, context: BuildContext,
@@ -632,7 +641,7 @@ internal suspend fun buildPlugins(
} }
} }
PluginBuildDescriptor(dir = pluginDir, layout = plugin, moduleNames = emptyList()) to task.await() PluginBuildDescriptor(dir = pluginDir, layout = plugin, os = os, moduleNames = emptyList()) to task.await()
} }
} }
@@ -897,12 +906,14 @@ private fun CoroutineScope.createBuildBrokenPluginListJob(context: BuildContext)
} }
} }
private fun CoroutineScope.createBuildThirdPartyLibraryListJob(entries: List<DistributionFileEntry>, context: BuildContext): Job? { private fun CoroutineScope.createBuildThirdPartyLibraryListJob(entries: Sequence<DistributionFileEntry>, context: BuildContext): Job? {
return createSkippableJob(spanBuilder("generate table of licenses for used third-party libraries"), return createSkippableJob(spanBuilder("generate table of licenses for used third-party libraries"),
BuildOptions.THIRD_PARTY_LIBRARIES_LIST_STEP, context) { BuildOptions.THIRD_PARTY_LIBRARIES_LIST_STEP, context) {
val generator = LibraryLicensesListGenerator.create(project = context.project, val generator = createLibraryLicensesListGenerator(
licensesList = context.productProperties.allLibraryLicenses, project = context.project,
usedModulesNames = entries.includedModules.toHashSet()) licenseList = context.productProperties.allLibraryLicenses,
usedModulesNames = getIncludedModules(entries).toHashSet(),
)
val distAllDir = context.paths.distAllDir val distAllDir = context.paths.distAllDir
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
Files.createDirectories(distAllDir) Files.createDirectories(distAllDir)
@@ -1215,7 +1226,7 @@ private fun addArtifactMapping(artifact: JpsArtifact, entries: MutableCollection
entries.add(ModuleLibraryFileEntry( entries.add(ModuleLibraryFileEntry(
path = artifactFile, path = artifactFile,
moduleName = parentReference.moduleName, moduleName = parentReference.moduleName,
libraryName = LibraryLicensesListGenerator.getLibraryName(library), libraryName = getLibraryFilename(library),
libraryFile = null, libraryFile = null,
hash = 0, hash = 0,
size = 0, size = 0,
@@ -1327,13 +1338,13 @@ private fun buildBlockMap(file: Path, json: JSON) {
} }
suspend fun createIdeClassPath(platform: PlatformLayout, context: BuildContext): Collection<String> { suspend fun createIdeClassPath(platform: PlatformLayout, context: BuildContext): Collection<String> {
val (lib, plugins) = generateProjectStructureMapping(context = context, platformLayout = platform) val contentReport = generateProjectStructureMapping(context = context, platformLayout = platform)
val pluginLayouts = context.productProperties.productLayout.pluginLayouts val pluginLayouts = context.productProperties.productLayout.pluginLayouts
val classPath = LinkedHashSet<Path>() val classPath = LinkedHashSet<Path>()
val libDir = context.paths.distAllDir.resolve("lib") val libDir = context.paths.distAllDir.resolve("lib")
for (entry in lib) { for (entry in contentReport.platform) {
if (!(entry is ModuleOutputEntry && entry.reason == ModuleIncludeReasons.PRODUCT_MODULES)) { if (!(entry is ModuleOutputEntry && entry.reason == ModuleIncludeReasons.PRODUCT_MODULES)) {
val relativePath = libDir.relativize(entry.path) val relativePath = libDir.relativize(entry.path)
if (relativePath.nameCount != 1 && !relativePath.startsWith("modules")) { if (relativePath.nameCount != 1 && !relativePath.startsWith("modules")) {
@@ -1351,7 +1362,7 @@ suspend fun createIdeClassPath(platform: PlatformLayout, context: BuildContext):
} }
val pluginDir = context.paths.distAllDir.resolve(PLUGINS_DIRECTORY) val pluginDir = context.paths.distAllDir.resolve(PLUGINS_DIRECTORY)
for (entry in plugins) { for (entry in contentReport.bundledPlugins.flatMap { it.second }) {
val relativePath = pluginDir.relativize(entry.path) val relativePath = pluginDir.relativize(entry.path)
// for plugins, our classloader load jars only from lib folder // for plugins, our classloader load jars only from lib folder
if (relativePath.nameCount != 3 || relativePath.getName(1).toString() != LIB_DIRECTORY) { if (relativePath.nameCount != 3 || relativePath.getName(1).toString() != LIB_DIRECTORY) {

View File

@@ -417,7 +417,7 @@ class JarPackager private constructor(
ModuleLibraryFileEntry( ModuleLibraryFileEntry(
path = targetFile, path = targetFile,
moduleName = moduleName, moduleName = moduleName,
libraryName = LibraryLicensesListGenerator.getLibraryName(library), libraryName = getLibraryFilename(library),
libraryFile = file, libraryFile = file,
hash = hash, hash = hash,
size = size, size = size,
@@ -601,7 +601,7 @@ class JarPackager private constructor(
ModuleLibraryFileEntry( ModuleLibraryFileEntry(
path = targetFile, path = targetFile,
moduleName = it, moduleName = it,
libraryName = LibraryLicensesListGenerator.getLibraryName(library), libraryName = getLibraryFilename(library),
libraryFile = file, libraryFile = file,
hash = hash, hash = hash,
size = size, size = size,

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
@file:Suppress("ReplaceGetOrSet", "ReplacePutWithAssignment") @file:Suppress("ReplaceGetOrSet", "ReplacePutWithAssignment")
package org.jetbrains.intellij.build.impl package org.jetbrains.intellij.build.impl
@@ -16,29 +16,29 @@ import org.jetbrains.jps.model.library.JpsRepositoryLibraryType
import java.nio.file.Files import java.nio.file.Files
import java.nio.file.Path import java.nio.file.Path
class LibraryLicensesListGenerator(private val libraryLicenses: List<LibraryLicense>) { fun createLibraryLicensesListGenerator(
companion object { project: JpsProject,
fun create(project: JpsProject, licenseList: List<LibraryLicense>,
licensesList: List<LibraryLicense>, usedModulesNames: Set<String>,
usedModulesNames: Set<String>, allowEmpty: Boolean = false,
allowEmpty: Boolean = false): LibraryLicensesListGenerator { ): LibraryLicensesListGenerator {
val licences = generateLicenses(project = project, licensesList = licensesList, usedModulesNames = usedModulesNames) val licences = generateLicenses(project = project, licensesList = licenseList, usedModulesNames = usedModulesNames)
check(allowEmpty || !licences.isEmpty()) { check(allowEmpty || !licences.isEmpty()) {
"Empty licenses table for ${licensesList.size} licenses and ${usedModulesNames.size} used modules names" "Empty licenses table for ${licenseList.size} licenses and ${usedModulesNames.size} used modules names"
}
return LibraryLicensesListGenerator(licences)
}
fun getLibraryName(lib: JpsLibrary): String {
val name = lib.name
if (name.startsWith('#')) {
// unnamed module libraries in IntelliJ project may have only one root
return lib.getPaths(JpsOrderRootType.COMPILED).first().fileName.toString()
}
return name
}
} }
return LibraryLicensesListGenerator(licences)
}
fun getLibraryFilename(lib: JpsLibrary): String {
val name = lib.name
if (name.startsWith('#')) {
// unnamed module libraries in IntelliJ project may have only one root
return lib.getPaths(JpsOrderRootType.COMPILED).first().fileName.toString()
}
return name
}
class LibraryLicensesListGenerator internal constructor(private val libraryLicenses: List<LibraryLicense>) {
fun generateHtml(file: Path) { fun generateHtml(file: Path) {
val out = StringBuilder() val out = StringBuilder()
out.append(""" out.append("""
@@ -147,7 +147,7 @@ private fun generateLicenses(project: JpsProject, licensesList: List<LibraryLice
val usedLibraries = HashMap<String, String>() val usedLibraries = HashMap<String, String>()
for (module in usedModules) { for (module in usedModules) {
for (item in JpsJavaExtensionService.dependencies(module).includedIn(JpsJavaClasspathKind.PRODUCTION_RUNTIME).libraries) { for (item in JpsJavaExtensionService.dependencies(module).includedIn(JpsJavaClasspathKind.PRODUCTION_RUNTIME).libraries) {
usedLibraries.put(LibraryLicensesListGenerator.getLibraryName(item), module.name) usedLibraries.put(getLibraryFilename(item), module.name)
} }
} }

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.intellij.build.impl package org.jetbrains.intellij.build.impl
import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope import com.intellij.platform.diagnostic.telemetry.helpers.useWithScope
@@ -230,7 +230,7 @@ open class MavenArtifactsBuilder(protected val context: BuildContext) {
else if (!isOptionalDependency(library)) { else if (!isOptionalDependency(library)) {
Span.current().addEvent("module depends on non-maven library", Attributes.of( Span.current().addEvent("module depends on non-maven library", Attributes.of(
AttributeKey.stringKey("module"), module.name, AttributeKey.stringKey("module"), module.name,
AttributeKey.stringKey("library"), LibraryLicensesListGenerator.getLibraryName(library), AttributeKey.stringKey("library"), getLibraryFilename(library),
)) ))
mavenizable = false mavenizable = false
} }

View File

@@ -1,9 +1,24 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.intellij.build.impl.projectStructureMapping package org.jetbrains.intellij.build.impl.projectStructureMapping
import org.jetbrains.intellij.build.PluginBuildDescriptor
import org.jetbrains.intellij.build.impl.ProjectLibraryData import org.jetbrains.intellij.build.impl.ProjectLibraryData
import java.nio.file.Path import java.nio.file.Path
internal data class ContentReport(
@JvmField val platform: List<DistributionFileEntry>,
@JvmField val bundledPlugins: List<Pair<PluginBuildDescriptor, List<DistributionFileEntry>>>,
@JvmField val nonBundledPlugins: List<Pair<PluginBuildDescriptor, List<DistributionFileEntry>>>,
) {
fun combined(): Sequence<DistributionFileEntry> {
return sequence {
yieldAll(platform)
yieldAll(bundledPlugins.flatMap { it.second })
yieldAll(nonBundledPlugins.flatMap { it.second })
}
}
}
sealed interface DistributionFileEntry { sealed interface DistributionFileEntry {
/** /**
* Path to a file in IDE distribution * Path to a file in IDE distribution

View File

@@ -7,29 +7,103 @@ import com.fasterxml.jackson.core.JsonFactory
import com.fasterxml.jackson.core.JsonGenerator import com.fasterxml.jackson.core.JsonGenerator
import com.fasterxml.jackson.core.util.DefaultIndenter import com.fasterxml.jackson.core.util.DefaultIndenter
import com.fasterxml.jackson.core.util.DefaultPrettyPrinter import com.fasterxml.jackson.core.util.DefaultPrettyPrinter
import org.jetbrains.intellij.build.BuildContext import com.fasterxml.jackson.dataformat.yaml.YAMLFactory
import org.jetbrains.intellij.build.BuildPaths import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator
import org.jetbrains.intellij.build.MAVEN_REPO import org.apache.commons.io.output.ByteArrayOutputStream
import org.jetbrains.intellij.build.*
import org.jetbrains.intellij.build.impl.ProjectLibraryData import org.jetbrains.intellij.build.impl.ProjectLibraryData
import org.jetbrains.intellij.build.io.ZipFileWriter
import java.io.File import java.io.File
import java.io.OutputStream import java.nio.ByteBuffer
import java.nio.file.Files import java.nio.file.Files
import java.nio.file.Path import java.nio.file.Path
import java.util.* import java.util.*
internal val Collection<DistributionFileEntry>.includedModules: Sequence<String> internal fun getIncludedModules(entries: Sequence<DistributionFileEntry>): Sequence<String> {
get() = asSequence().mapNotNull { (it as? ModuleOutputEntry)?.moduleName }.distinct() return entries.mapNotNull { (it as? ModuleOutputEntry)?.moduleName }.distinct()
}
/** internal fun buildJarContentReport(contentReport: ContentReport, zipFileWriter: ZipFileWriter, buildPaths: BuildPaths, context: BuildContext) {
* Provides mapping between files in the product distribution and modules and libraries in the project configuration. The generated JSON file zipFileWriter.uncompressedData("platform.yaml", ByteBuffer.wrap(buildPlatformContentReport(contentReport, buildPaths, context.getDistFiles(os = null, arch = null))), null)
* contains an array of [DistributionFileEntry]. zipFileWriter.uncompressedData("bundled-plugins.yaml", ByteBuffer.wrap(buildPluginContentReport(contentReport.bundledPlugins, buildPaths)), null)
*/ zipFileWriter.uncompressedData("non-bundled-plugins.yaml", ByteBuffer.wrap(buildPluginContentReport(contentReport.nonBundledPlugins, buildPaths)), null)
internal fun buildJarContentReport(entries: Collection<DistributionFileEntry>, out: OutputStream?, buildPaths: BuildPaths, context: BuildContext) { }
val writer = JsonFactory().createGenerator(out).setPrettyPrinter(IntelliJDefaultPrettyPrinter())
private fun buildPluginContentReport(pluginToEntries: List<Pair<PluginBuildDescriptor, List<DistributionFileEntry>>>, buildPaths: BuildPaths): ByteArray {
val out = ByteArrayOutputStream()
val writer = createYamlGenerator(out)
writer.writeStartArray()
for ((plugin, entries) in pluginToEntries) {
val fileToPresentablePath = HashMap<Path, String>()
val fileToEntry = TreeMap<String, MutableList<DistributionFileEntry>>()
for (entry in entries) {
val presentablePath = fileToPresentablePath.computeIfAbsent(entry.path) {
if (entry.path.startsWith(plugin.dir)) {
plugin.dir.relativize(entry.path).toString().replace(File.separatorChar, '/')
}
else {
shortenAndNormalizePath(it, buildPaths)
}
}
fileToEntry.computeIfAbsent(presentablePath) { mutableListOf() }.add(entry)
}
writer.writeStartObject()
writer.writeStringField("mainModule", plugin.layout.mainModule)
if (plugin.os != null) {
writer.writeStringField("os", plugin.os.osId)
}
val contentModuleReason = "<- ${plugin.layout.mainModule} (plugin content)"
writer.writeArrayFieldStart("content")
for ((filePath, fileEntries) in fileToEntry) {
writer.writeStartObject()
writer.writeStringField("name", filePath)
writeProjectLibs(fileEntries, writer, buildPaths)
writeModules(
writer = writer,
fileEntries = fileEntries.asSequence().filter { it !is ModuleOutputEntry || it.reason != contentModuleReason },
buildPaths = buildPaths
)
writeModules(
writer = writer,
fileEntries = fileEntries.asSequence().filter { it !is ModuleOutputEntry || it.reason == contentModuleReason },
buildPaths = buildPaths,
fieldName = "contentModules",
writeReason = false,
)
writer.writeEndObject()
}
writer.writeEndArray()
writer.writeEndObject()
}
writer.writeEndArray()
writer.close()
return out.toByteArray()
}
private fun createYamlGenerator(out: ByteArrayOutputStream): YAMLGenerator {
return YAMLFactory().createGenerator(out)
.useDefaultPrettyPrinter()
.configure(YAMLGenerator.Feature.MINIMIZE_QUOTES, true)
}
private fun buildPlatformContentReport(contentReport: ContentReport, buildPaths: BuildPaths, distFiles: Collection<DistFile>): ByteArray {
val out = ByteArrayOutputStream()
val writer = createYamlGenerator(out)
val fileToEntry = TreeMap<String, MutableList<DistributionFileEntry>>() val fileToEntry = TreeMap<String, MutableList<DistributionFileEntry>>()
val fileToPresentablePath = HashMap<Path, String>() val fileToPresentablePath = HashMap<Path, String>()
for (entry in entries) { for (entry in contentReport.platform) {
val presentablePath = fileToPresentablePath.computeIfAbsent(entry.path) { shortenAndNormalizePath(it, buildPaths) } val presentablePath = fileToPresentablePath.computeIfAbsent(entry.path) {
shortenAndNormalizePath(it, buildPaths)
}
fileToEntry.computeIfAbsent(presentablePath) { mutableListOf() }.add(entry) fileToEntry.computeIfAbsent(presentablePath) { mutableListOf() }.add(entry)
} }
writer.writeStartArray() writer.writeStartArray()
@@ -37,11 +111,11 @@ internal fun buildJarContentReport(entries: Collection<DistributionFileEntry>, o
writer.writeStartObject() writer.writeStartObject()
writer.writeStringField("name", filePath) writer.writeStringField("name", filePath)
writeProjectLibs(fileEntries, writer, buildPaths) writeProjectLibs(fileEntries, writer, buildPaths)
writeModules(writer = writer, fileEntries = fileEntries, buildPaths = buildPaths) writeModules(writer = writer, fileEntries = fileEntries.asSequence(), buildPaths = buildPaths)
writer.writeEndObject() writer.writeEndObject()
} }
for (item in context.getDistFiles(os = null, arch = null)) { for (item in distFiles) {
writer.writeStartObject() writer.writeStartObject()
writer.writeStringField("name", item.relativePath) writer.writeStringField("name", item.relativePath)
@@ -51,17 +125,34 @@ internal fun buildJarContentReport(entries: Collection<DistributionFileEntry>, o
writer.writeEndObject() writer.writeEndObject()
} }
writer.writeStartObject()
writer.writeObjectField("name", "plugins")
writer.writeArrayFieldStart("bundled")
for (p in contentReport.bundledPlugins) {
writer.writeString(p.first.layout.mainModule)
}
writer.writeEndArray()
writer.writeArrayFieldStart("nonBundled")
for (p in contentReport.nonBundledPlugins) {
writer.writeString(p.first.layout.mainModule)
}
writer.writeEndArray()
writer.writeEndObject()
writer.writeEndArray() writer.writeEndArray()
writer.close() writer.close()
return out.toByteArray()
} }
internal fun writeProjectStructureReport(entries: Collection<DistributionFileEntry>, file: Path, buildPaths: BuildPaths, extraRoot: Path? = null) { internal fun writeProjectStructureReport(contentReport: ContentReport, file: Path, buildPaths: BuildPaths, extraRoot: Path? = null) {
Files.createDirectories(file.parent) Files.createDirectories(file.parent)
Files.newOutputStream(file).use { out -> Files.newOutputStream(file).use { out ->
val writer = JsonFactory().createGenerator(out).setPrettyPrinter(IntelliJDefaultPrettyPrinter()) val writer = JsonFactory().createGenerator(out).setPrettyPrinter(IntelliJDefaultPrettyPrinter())
writer.use { writer.use {
writer.writeStartArray() writer.writeStartArray()
for (entry in entries) { for (entry in contentReport.combined()) {
writer.writeStartObject() writer.writeStartObject()
writer.writeStringField("path", shortenAndNormalizePath(entry.path, buildPaths, extraRoot)) writer.writeStringField("path", shortenAndNormalizePath(entry.path, buildPaths, extraRoot))
@@ -73,7 +164,7 @@ internal fun writeProjectStructureReport(entries: Collection<DistributionFileEnt
writer.writeNumberField("size", entry.size) writer.writeNumberField("size", entry.size)
} }
is ModuleOutputEntry -> { is ModuleOutputEntry -> {
writeModuleItem(writer, entry) writeModuleItem(writer, entry, writeReason = true)
} }
is ModuleTestOutputEntry -> { is ModuleTestOutputEntry -> {
writer.writeStringField("module", entry.moduleName) writer.writeStringField("module", entry.moduleName)
@@ -126,7 +217,13 @@ private fun shortenAndNormalizePath(file: Path, buildPaths: BuildPaths, extraRoo
return if (result.startsWith("temp/")) result.substring("temp/".length) else result return if (result.startsWith("temp/")) result.substring("temp/".length) else result
} }
private fun writeModules(writer: JsonGenerator, fileEntries: List<DistributionFileEntry>, buildPaths: BuildPaths) { private fun writeModules(
writer: JsonGenerator,
fileEntries: Sequence<DistributionFileEntry>,
buildPaths: BuildPaths,
fieldName: String = "modules",
writeReason: Boolean = true,
) {
var opened = false var opened = false
for (entry in fileEntries) { for (entry in fileEntries) {
if (entry !is ModuleOutputEntry) { if (entry !is ModuleOutputEntry) {
@@ -134,13 +231,13 @@ private fun writeModules(writer: JsonGenerator, fileEntries: List<DistributionFi
} }
if (!opened) { if (!opened) {
writer.writeArrayFieldStart("modules") writer.writeArrayFieldStart(fieldName)
opened = true opened = true
} }
writer.writeStartObject() writer.writeStartObject()
val moduleName = entry.moduleName val moduleName = entry.moduleName
writeModuleItem(writer, entry) writeModuleItem(writer, entry, writeReason = writeReason)
writeModuleLibraries(fileEntries = fileEntries, moduleName = moduleName, writer = writer, buildPaths = buildPaths) writeModuleLibraries(fileEntries = fileEntries, moduleName = moduleName, writer = writer, buildPaths = buildPaths)
writer.writeEndObject() writer.writeEndObject()
} }
@@ -149,16 +246,18 @@ private fun writeModules(writer: JsonGenerator, fileEntries: List<DistributionFi
} }
} }
private fun writeModuleItem(writer: JsonGenerator, entry: ModuleOutputEntry) { private fun writeModuleItem(writer: JsonGenerator, entry: ModuleOutputEntry, writeReason: Boolean) {
writer.writeStringField("name", entry.moduleName) writer.writeStringField("name", entry.moduleName)
writer.writeNumberField("size", entry.size) writer.writeNumberField("size", entry.size)
entry.reason?.let { if (writeReason) {
writer.writeStringField("reason", it) entry.reason?.let {
writer.writeStringField("reason", it)
}
} }
} }
private fun writeModuleLibraries(fileEntries: List<DistributionFileEntry>, moduleName: String, writer: JsonGenerator, buildPaths: BuildPaths) { private fun writeModuleLibraries(fileEntries: Sequence<DistributionFileEntry>, moduleName: String, writer: JsonGenerator, buildPaths: BuildPaths) {
val entriesGroupedByLibraryName = fileEntries.asSequence() val entriesGroupedByLibraryName = fileEntries
.filterIsInstance<ModuleLibraryFileEntry>() .filterIsInstance<ModuleLibraryFileEntry>()
.filter { it.moduleName == moduleName } .filter { it.moduleName == moduleName }
.groupBy { it.libraryName } .groupBy { it.libraryName }

View File

@@ -16,7 +16,6 @@ import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.VisibleForTesting import org.jetbrains.annotations.VisibleForTesting
import org.jetbrains.intellij.build.BuildContext import org.jetbrains.intellij.build.BuildContext
import org.jetbrains.intellij.build.impl.projectStructureMapping.* import org.jetbrains.intellij.build.impl.projectStructureMapping.*
import org.jetbrains.jps.model.library.JpsLibrary
import org.jetbrains.jps.model.library.JpsOrderRootType import org.jetbrains.jps.model.library.JpsOrderRootType
import java.io.IOException import java.io.IOException
import java.nio.file.Path import java.nio.file.Path
@@ -29,15 +28,14 @@ import kotlin.io.path.pathString
* (along with information from plugin.xml files and other files describing custom layouts of plugins if necessary) to determine which * (along with information from plugin.xml files and other files describing custom layouts of plugins if necessary) to determine which
* resources should be included in the distribution, instead of taking this information from the project model. * resources should be included in the distribution, instead of taking this information from the project model.
*/ */
internal fun generateRuntimeModuleRepository(entries: List<DistributionFileEntry>, context: BuildContext) { internal fun generateRuntimeModuleRepository(entries: Sequence<DistributionFileEntry>, context: BuildContext) {
val compiledModulesDescriptors = context.originalModuleRepository.rawRepositoryData val compiledModulesDescriptors = context.originalModuleRepository.rawRepositoryData
val repositoryEntries = ArrayList<RuntimeModuleRepositoryEntry>() val repositoryEntries = ArrayList<RuntimeModuleRepositoryEntry>()
val osSpecificDistPaths = listOf(null to context.paths.distAllDir) + val osSpecificDistPaths = listOf(null to context.paths.distAllDir) +
SUPPORTED_DISTRIBUTIONS.map { it to getOsAndArchSpecificDistDirectory(it.os, it.arch, context) } SUPPORTED_DISTRIBUTIONS.map { it to getOsAndArchSpecificDistDirectory(it.os, it.arch, context) }
for (entry in entries) { for (entry in entries) {
val (distribution, rootPath) = osSpecificDistPaths.find { entry.path.startsWith(it.second) } val (distribution, rootPath) = osSpecificDistPaths.find { entry.path.startsWith(it.second) } ?: continue
?: continue
val pathInDist = rootPath.relativize(entry.path).pathString val pathInDist = rootPath.relativize(entry.path).pathString
repositoryEntries.add(RuntimeModuleRepositoryEntry(distribution, pathInDist, entry)) repositoryEntries.add(RuntimeModuleRepositoryEntry(distribution, pathInDist, entry))
@@ -221,12 +219,14 @@ private fun computeMainPathsForResourcesCopiedToMultiplePlaces(entries: List<Run
.filter { it.getFiles(JpsOrderRootType.COMPILED).size == 1 } .filter { it.getFiles(JpsOrderRootType.COMPILED).size == 1 }
.mapTo(HashSet()) { it.name } .mapTo(HashSet()) { it.name }
fun ProjectLibraryEntry.isPackedIntoSingleJar() = data.libraryName in singleFileProjectLibraries fun isPackedIntoSingleJar(projectLibraryEntry: ProjectLibraryEntry): Boolean {
|| data.packMode == LibraryPackMode.MERGED return (projectLibraryEntry.data.libraryName in singleFileProjectLibraries
|| data.packMode == LibraryPackMode.STANDALONE_MERGED || projectLibraryEntry.data.packMode == LibraryPackMode.MERGED
|| projectLibraryEntry.data.packMode == LibraryPackMode.STANDALONE_MERGED)
}
fun ModuleLibraryFileEntry.isPackedIntoSingleJar(): Boolean { fun ModuleLibraryFileEntry.isPackedIntoSingleJar(): Boolean {
val library = context.findRequiredModule(moduleName).libraryCollection.libraries.find { LibraryLicensesListGenerator.getLibraryName(it) == libraryName } val library = context.findRequiredModule(moduleName).libraryCollection.libraries.find { getLibraryFilename(it) == libraryName }
require(library != null) { "Cannot find module-level library '$libraryName' in '$moduleName'" } require(library != null) { "Cannot find module-level library '$libraryName' in '$moduleName'" }
return library.getFiles(JpsOrderRootType.COMPILED).size == 1 return library.getFiles(JpsOrderRootType.COMPILED).size == 1
} }
@@ -236,8 +236,8 @@ private fun computeMainPathsForResourcesCopiedToMultiplePlaces(entries: List<Run
//exclude libraries which may be packed in multiple JARs from consideration, because multiple entries may not indicate that a library is copied to multiple places in such cases, //exclude libraries which may be packed in multiple JARs from consideration, because multiple entries may not indicate that a library is copied to multiple places in such cases,
//and all resource roots should be kept //and all resource roots should be kept
val moduleIdsToPaths = entries.asSequence() val moduleIdsToPaths = entries.asSequence()
.filter { entry -> entry.origin is ProjectLibraryEntry && entry.origin.isPackedIntoSingleJar() .filter { entry -> entry.origin is ProjectLibraryEntry && isPackedIntoSingleJar(entry.origin)
|| entry.origin is ModuleLibraryFileEntry && entry.origin.isPackedIntoSingleJar() || entry.origin is ModuleLibraryFileEntry && entry.origin.isPackedIntoSingleJar()
|| entry.origin is ModuleOutputEntry } || entry.origin is ModuleOutputEntry }
.groupBy({ it.origin.runtimeModuleId }, { it.relativePath }) .groupBy({ it.origin.runtimeModuleId }, { it.relativePath })

View File

@@ -1,4 +1,6 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
@file:Suppress("ReplaceGetOrSet")
package org.jetbrains.intellij.build.impl.sbom package org.jetbrains.intellij.build.impl.sbom
import com.intellij.openapi.util.SystemInfoRt import com.intellij.openapi.util.SystemInfoRt
@@ -441,7 +443,7 @@ internal class SoftwareBillOfMaterialsImpl(
private val mavenLibraries: List<MavenLibrary> by lazy { private val mavenLibraries: List<MavenLibrary> by lazy {
runBlocking(Dispatchers.IO) { runBlocking(Dispatchers.IO) {
val usedModulesNames = distributionFiles.includedModules.toSet() val usedModulesNames = getIncludedModules(distributionFiles.asSequence()).toHashSet()
val usedModules = context.project.modules.asSequence().filter { val usedModules = context.project.modules.asSequence().filter {
usedModulesNames.contains(it.name) usedModulesNames.contains(it.name)
}.toSet() }.toSet()
@@ -462,8 +464,8 @@ internal class SoftwareBillOfMaterialsImpl(
it.first.mavenDescriptor?.mavenId ?: it.first.name it.first.mavenDescriptor?.mavenId ?: it.first.name
}.groupBy({ it.first }, { it.second }).map { (library, modules) -> }.groupBy({ it.first }, { it.second }).map { (library, modules) ->
async { async {
val libraryName = LibraryLicensesListGenerator.getLibraryName(library) val libraryName = getLibraryFilename(library)
val libraryEntry = librariesBundledInDistributions[libraryName] val libraryEntry = librariesBundledInDistributions.get(libraryName)
val libraryFile = libraryEntry?.libraryFile ?: return@async null val libraryFile = libraryEntry?.libraryFile ?: return@async null
val libraryLicense = context.productProperties.allLibraryLicenses.firstOrNull { val libraryLicense = context.productProperties.allLibraryLicenses.firstOrNull {
it.getLibraryNames().contains(libraryName) it.getLibraryNames().contains(libraryName)
@@ -616,9 +618,9 @@ internal class SoftwareBillOfMaterialsImpl(
val organizations = (pomModel?.organization?.name?.let { sequenceOf(it) } val organizations = (pomModel?.organization?.name?.let { sequenceOf(it) }
?: pomModel?.developers?.asSequence()?.mapNotNull { it.organization }) ?: pomModel?.developers?.asSequence()?.mapNotNull { it.organization })
?.filter { it.isNotBlank() } ?.filter { it.isNotBlank() }
?.mapNotNull { ?.map { htmlContent ->
@Suppress("HardCodedStringLiteral") @Suppress("HardCodedStringLiteral")
Jsoup.parse(it).wholeText().takeIf { it.isNotBlank() } ?: it Jsoup.parse(htmlContent).wholeText().takeIf { it.isNotBlank() } ?: htmlContent
}?.distinct() }?.distinct()
?.joinToString(transform = ::translateSupplier) ?.joinToString(transform = ::translateSupplier)
?.takeIf { it.isNotBlank() } ?.takeIf { it.isNotBlank() }

View File

@@ -1,9 +1,9 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.platform.buildScripts.testFramework package com.intellij.platform.buildScripts.testFramework
import org.assertj.core.api.SoftAssertions import org.assertj.core.api.SoftAssertions
import org.jetbrains.intellij.build.LibraryLicense import org.jetbrains.intellij.build.LibraryLicense
import org.jetbrains.intellij.build.impl.LibraryLicensesListGenerator import org.jetbrains.intellij.build.impl.getLibraryFilename
import org.jetbrains.jps.model.JpsProject import org.jetbrains.jps.model.JpsProject
import org.jetbrains.jps.model.java.JpsJavaClasspathKind import org.jetbrains.jps.model.java.JpsJavaClasspathKind
import org.jetbrains.jps.model.java.JpsJavaExtensionService import org.jetbrains.jps.model.java.JpsJavaExtensionService
@@ -35,7 +35,7 @@ class LibraryLicensesTester(private val project: JpsProject, private val license
val librariesWithLicenses = licenses.flatMap { it.getLibraryNames() }.toSet() val librariesWithLicenses = licenses.flatMap { it.getLibraryNames() }.toSet()
for ((jpsLibrary, jpsModule) in libraries) { for ((jpsLibrary, jpsModule) in libraries) {
val libraryName = LibraryLicensesListGenerator.getLibraryName(jpsLibrary) val libraryName = getLibraryFilename(jpsLibrary)
if (libraryName !in librariesWithLicenses) { if (libraryName !in librariesWithLicenses) {
// require licence entry only for a main library (ktor-client), not for sub-libraries // require licence entry only for a main library (ktor-client), not for sub-libraries
if (isImplicitLibrary(libraryName)) { if (isImplicitLibrary(libraryName)) {

View File

@@ -0,0 +1,11 @@
- name: lib/intellij.remoterobot.remote.fixtures.jar
- name: lib/intellij.remoterobot.robot.server.core.jar
- name: lib/platform-testFramework-ui.jar
projectLibraries:
- name: okhttp
files:
- name: $MAVEN_REPOSITORY$/com/squareup/okhttp3/okhttp/5/okhttp-5.jar
- name: $MAVEN_REPOSITORY$/com/squareup/okio/okio-jvm/3/okio-jvm-3.jar
reason: withProjectLibrary
modules:
- name: intellij.platform.testFramework.ui

View File

@@ -0,0 +1,3 @@
- name: lib/platform-tracing-ide.jar
modules:
- name: intellij.platform.tracing.ide

View File

@@ -0,0 +1,3 @@
- name: lib/java-byteCodeViewer.jar
modules:
- name: intellij.java.byteCodeViewer

View File

@@ -0,0 +1,8 @@
- name: lib/java-langInjection-jps.jar
modules:
- name: intellij.java.langInjection.jps
- name: lib/platform-langInjection.jar
modules:
- name: intellij.java.langInjection
- name: intellij.platform.langInjection
- name: intellij.xml.langInjection

View File

@@ -0,0 +1,6 @@
- name: lib/ant-jps.jar
modules:
- name: intellij.ant.jps
- name: lib/antIntegration.jar
modules:
- name: intellij.ant

View File

@@ -0,0 +1,6 @@
- name: lib/vcs-changeReminder.jar
modules:
- name: intellij.vcs.changeReminder
libraries:
change-reminder-prediction-model:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/changeReminder/prediction/randomForestRegressor/0/randomForestRegressor-0.jar

View File

@@ -0,0 +1,3 @@
- name: lib/classic-ui.jar
modules:
- name: intellij.classic.ui

View File

@@ -0,0 +1,3 @@
- name: lib/color-scheme-all_hallows_eve.jar
modules:
- name: intellij.color.scheme.all_hallows_eve

View File

@@ -0,0 +1,3 @@
- name: lib/color-scheme-blackboard.jar
modules:
- name: intellij.color.scheme.blackboard

View File

@@ -0,0 +1,3 @@
- name: lib/color-scheme-cobalt.jar
modules:
- name: intellij.color.scheme.cobalt

View File

@@ -0,0 +1,3 @@
- name: lib/color-scheme-github.jar
modules:
- name: intellij.color.scheme.github

View File

@@ -0,0 +1,3 @@
- name: lib/color-scheme-monokai.jar
modules:
- name: intellij.color.scheme.monokai

View File

@@ -0,0 +1,3 @@
- name: lib/color-scheme-rails_casts.jar
modules:
- name: intellij.color.scheme.rails_casts

View File

@@ -0,0 +1,3 @@
- name: lib/color-scheme-twilight.jar
modules:
- name: intellij.color.scheme.twilight

View File

@@ -0,0 +1,3 @@
- name: lib/color-scheme-vibrant_ink.jar
modules:
- name: intellij.color.scheme.vibrant_ink

View File

@@ -0,0 +1,3 @@
- name: lib/color-scheme-warmNeon.jar
modules:
- name: intellij.color.scheme.warmNeon

View File

@@ -0,0 +1,3 @@
- name: lib/commander.jar
modules:
- name: intellij.commander

View File

@@ -0,0 +1,38 @@
- name: lib/completionMlRankingModels.jar
modules:
- name: intellij.completionMlRankingModels
libraries:
completion-ranking-cpp-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-cpp/0/completion-ranking-cpp-0.jar
completion-ranking-css-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-css/0/completion-ranking-css-0.jar
completion-ranking-dart-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-dart/0/completion-ranking-dart-0.jar
completion-ranking-go-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-go/0/completion-ranking-go-0.jar
completion-ranking-html-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-html/0/completion-ranking-html-0.jar
completion-ranking-java-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-java/0/completion-ranking-java-0.jar
completion-ranking-java-exp2:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-java/0/completion-ranking-java-0.jar
completion-ranking-js-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-js/0/completion-ranking-js-0.jar
completion-ranking-kotlin-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-kotlin/0/completion-ranking-kotlin-0.jar
completion-ranking-php-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-php/0/completion-ranking-php-0.jar
completion-ranking-python-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-python/0/completion-ranking-python-0.jar
completion-ranking-ruby-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-ruby/0/completion-ranking-ruby-0.jar
completion-ranking-rust-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-rust/0/completion-ranking-rust-0.jar
completion-ranking-scala-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-scala/0/completion-ranking-scala-0.jar
completion-ranking-sh-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-sh/0/completion-ranking-sh-0.jar
completion-ranking-swift-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-swift/0/completion-ranking-swift-0.jar
completion-ranking-typescript-exp:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-typescript/0/completion-ranking-typescript-0.jar

View File

@@ -0,0 +1,3 @@
- name: lib/completionMlRanking.jar
modules:
- name: intellij.completionMlRanking

View File

@@ -0,0 +1,3 @@
- name: lib/configurationScript.jar
modules:
- name: intellij.configurationScript

View File

@@ -0,0 +1,5 @@
- name: lib/copyright.jar
modules:
- name: intellij.copyright
contentModules:
- name: intellij.copyright.vcs

View File

@@ -0,0 +1,11 @@
- name: lib/jacoco.jar
- name: lib/java-coverage-rt.jar
modules:
- name: intellij.java.coverage.rt
- name: lib/java-coverage.jar
modules:
- name: intellij.java.coverage
libraries:
coverage-report:
- name: $MAVEN_REPOSITORY$/org/freemarker/freemarker/2/freemarker-2.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/coverage-report/1/coverage-report-1.jar

View File

@@ -0,0 +1,10 @@
- name: lib/dev.jar
modules:
- name: intellij.dev
contentModules:
- name: intellij.dev.codeInsight
- name: intellij.dev.psiViewer
- name: intellij.groovy.dev
- name: intellij.java.dev
- name: intellij.kotlin.dev
- name: intellij.platform.statistics.devkit

View File

@@ -617,6 +617,7 @@
<fileIconProvider implementation="org.jetbrains.idea.devkit.apiDump.ApiDumpFileIconProvider"/> <fileIconProvider implementation="org.jetbrains.idea.devkit.apiDump.ApiDumpFileIconProvider"/>
<generatedSourcesFilter implementation="org.jetbrains.idea.devkit.apiDump.ApiDumpGeneratedSourcesFilter"/> <generatedSourcesFilter implementation="org.jetbrains.idea.devkit.apiDump.ApiDumpGeneratedSourcesFilter"/>
<generatedSourcesFilter implementation="org.jetbrains.idea.devkit.contentReport.ContentReportGeneratedSourcesFilter"/>
<!-- INTERNAL --> <!-- INTERNAL -->
<consoleFilterProvider implementation="org.jetbrains.idea.devkit.run.ModulePathFilterProvider"/> <consoleFilterProvider implementation="org.jetbrains.idea.devkit.run.ModulePathFilterProvider"/>

View File

@@ -0,0 +1,25 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.idea.devkit.contentReport
import com.intellij.openapi.project.IntelliJProjectUtil
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.GeneratedSourceFilterHyperLinkAction
import com.intellij.openapi.roots.GeneratedSourceFilterNotification
import com.intellij.openapi.roots.GeneratedSourcesFilter
import com.intellij.openapi.vfs.VirtualFile
private class ContentReportGeneratedSourcesFilter : GeneratedSourcesFilter() {
override fun isGeneratedSource(file: VirtualFile, project: Project): Boolean {
return IntelliJProjectUtil.isIntelliJPlatformProject(project) && file.name == "plugin-content.yaml"
}
override fun getNotification(file: VirtualFile, project: Project): GeneratedSourceFilterNotification {
return GeneratedSourceFilterNotification(
text = "Do not modify manually, content report must be changed by IdeaUltimatePackagingTest",
actions = listOf(GeneratedSourceFilterHyperLinkAction(
text = "Distribution Content Approving",
link = "https://youtrack.jetbrains.com/articles/IDEA-A-80/Distribution-Content-Approving",
))
)
}
}

View File

@@ -0,0 +1,25 @@
- name: lib/devkit-jps.jar
modules:
- name: intellij.devkit.jps
- name: lib/devkit-runtimeModuleRepository-jps.jar
modules:
- name: intellij.devkit.runtimeModuleRepository.jps
- name: lib/devkit.jar
projectLibraries:
- name: workspace-model-codegen
files:
- name: $MAVEN_REPOSITORY$/com/jetbrains/intellij/platform/workspace-model-codegen/0/workspace-model-codegen-0.jar
reason: <- intellij.devkit.workspaceModel
modules:
- name: intellij.devkit
contentModules:
- name: intellij.devkit.core
- name: intellij.devkit.git
- name: intellij.devkit.gradle
- name: intellij.devkit.i18n
- name: intellij.devkit.images
- name: intellij.devkit.intelliLang
- name: intellij.devkit.themes
- name: intellij.devkit.uiDesigner
- name: intellij.devkit.workspaceModel
- name: intellij.kotlin.devkit

View File

@@ -0,0 +1,9 @@
- name: lib/eclipse-common.jar
modules:
- name: intellij.eclipse.common
- name: lib/eclipse-jps.jar
modules:
- name: intellij.eclipse.jps
- name: lib/eclipse.jar
modules:
- name: intellij.eclipse

View File

@@ -0,0 +1,8 @@
- name: lib/editorconfig.jar
projectLibraries:
- name: ec4j-core
files:
- name: $MAVEN_REPOSITORY$/org/ec4j/core/ec4j-core/0/ec4j-core-0.jar
reason: <- intellij.editorconfig
modules:
- name: intellij.editorconfig

View File

@@ -0,0 +1,3 @@
- name: lib/emojipicker.jar
modules:
- name: intellij.emojipicker

View File

@@ -0,0 +1,29 @@
- name: lib/evaluationPlugin.jar
projectLibraries:
- name: clikt
files:
- name: $MAVEN_REPOSITORY$/com/github/ajalt/clikt/clikt-jvm/3/clikt-jvm-3.jar
reason: <- intellij.evaluationPlugin
- name: commons-text
files:
- name: $MAVEN_REPOSITORY$/org/apache/commons/commons-text/1/commons-text-1.jar
reason: <- intellij.evaluationPlugin.core
modules:
- name: intellij.evaluationPlugin
- name: intellij.evaluationPlugin.core
reason: <- intellij.evaluationPlugin
- name: intellij.evaluationPlugin.fullLine
- name: intellij.evaluationPlugin.languages
reason: <- intellij.evaluationPlugin
- name: intellij.evaluationPlugin.languages.cpp
- name: intellij.evaluationPlugin.languages.csharp
- name: intellij.evaluationPlugin.languages.go
- name: intellij.evaluationPlugin.languages.java
- name: intellij.evaluationPlugin.languages.js
- name: intellij.evaluationPlugin.languages.kotlin
- name: intellij.evaluationPlugin.languages.php
- name: intellij.evaluationPlugin.languages.python
- name: intellij.evaluationPlugin.languages.ruby
- name: intellij.evaluationPlugin.languages.terraform
- name: intellij.evaluationPlugin.llm
- name: intellij.tools.ide.metrics.collector

View File

@@ -0,0 +1,6 @@
- name: lib/filePrediction.jar
modules:
- name: intellij.filePrediction
libraries:
file-prediction-model:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/filePrediction/model/file-prediction-model/0/file-prediction-model-0.jar

View File

@@ -0,0 +1,8 @@
- name: lib/git4idea-rt.jar
modules:
- name: intellij.vcs.git.rt
- name: lib/vcs-git.jar
modules:
- name: intellij.vcs.git
contentModules:
- name: intellij.vcs.git.coverage

View File

@@ -0,0 +1,3 @@
- name: lib/vcs-gitlab.jar
modules:
- name: intellij.vcs.gitlab

View File

@@ -0,0 +1,3 @@
- name: lib/gradle-java-maven.jar
modules:
- name: intellij.gradle.java.maven

View File

@@ -0,0 +1,3 @@
- name: lib/gradle-dependencyUpdater.jar
modules:
- name: intellij.gradle.dependencyUpdater

View File

@@ -0,0 +1,3 @@
- name: lib/gradle-analysis.jar
modules:
- name: intellij.gradle.analysis

View File

@@ -0,0 +1,6 @@
- name: lib/gradle-java.jar
modules:
- name: intellij.gradle.java
- name: lib/gradle-jps.jar
modules:
- name: intellij.gradle.jps

View File

@@ -0,0 +1,173 @@
- name: lib/ant/ant-antlr.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-antlr.jar
reason: withProjectLibrary
- name: lib/ant/ant-apache-bcel.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-apache-bcel.jar
reason: withProjectLibrary
- name: lib/ant/ant-apache-bsf.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-apache-bsf.jar
reason: withProjectLibrary
- name: lib/ant/ant-apache-log4j.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-apache-log4j.jar
reason: withProjectLibrary
- name: lib/ant/ant-apache-oro.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-apache-oro.jar
reason: withProjectLibrary
- name: lib/ant/ant-apache-regexp.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-apache-regexp.jar
reason: withProjectLibrary
- name: lib/ant/ant-apache-resolver.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-apache-resolver.jar
reason: withProjectLibrary
- name: lib/ant/ant-apache-xalan2.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-apache-xalan2.jar
reason: withProjectLibrary
- name: lib/ant/ant-commons-logging.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-commons-logging.jar
reason: withProjectLibrary
- name: lib/ant/ant-commons-net.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-commons-net.jar
reason: withProjectLibrary
- name: lib/ant/ant-imageio.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-imageio.jar
reason: withProjectLibrary
- name: lib/ant/ant-jai.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-jai.jar
reason: withProjectLibrary
- name: lib/ant/ant-jakartamail.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-jakartamail.jar
reason: withProjectLibrary
- name: lib/ant/ant-javamail.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-javamail.jar
reason: withProjectLibrary
- name: lib/ant/ant-jdepend.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-jdepend.jar
reason: withProjectLibrary
- name: lib/ant/ant-jmf.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-jmf.jar
reason: withProjectLibrary
- name: lib/ant/ant-jsch.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-jsch.jar
reason: withProjectLibrary
- name: lib/ant/ant-junit.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-junit.jar
reason: withProjectLibrary
- name: lib/ant/ant-junit4.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-junit4.jar
reason: withProjectLibrary
- name: lib/ant/ant-junitlauncher.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-junitlauncher.jar
reason: withProjectLibrary
- name: lib/ant/ant-launcher.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-launcher.jar
reason: withProjectLibrary
- name: lib/ant/ant-netrexx.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-netrexx.jar
reason: withProjectLibrary
- name: lib/ant/ant-swing.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-swing.jar
reason: withProjectLibrary
- name: lib/ant/ant-testutil.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-testutil.jar
reason: withProjectLibrary
- name: lib/ant/ant-xz.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant-xz.jar
reason: withProjectLibrary
- name: lib/ant/ant.jar
projectLibraries:
- name: Ant
files:
- name: $PROJECT_DIR$/community/lib/ant/lib/ant.jar
reason: withProjectLibrary
- name: lib/gradle-api-8.9.jar
projectLibraries:
- name: Gradle
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/gradle-api/8/gradle-api-8.jar
reason: withProjectLibrary
- name: lib/gradle-tooling-extension-api.jar
modules:
- name: intellij.gradle.toolingExtension
- name: lib/gradle-tooling-extension-impl.jar
modules:
- name: intellij.gradle.toolingExtension.impl
- name: lib/gradle.jar
modules:
- name: intellij.gradle
- name: intellij.gradle.common
- name: intellij.gradle.toolingProxy

View File

@@ -0,0 +1,81 @@
- name: lib/grazie.jar
projectLibraries:
- name: commons-text
files:
- name: $MAVEN_REPOSITORY$/org/apache/commons/commons-text/1/commons-text-1.jar
reason: <- intellij.grazie.core
- name: grpc-core
files:
- name: $MAVEN_REPOSITORY$/com/google/android/annotations/4/annotations-4.jar
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-api/1/grpc-api-1.jar
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-context/1/grpc-context-1.jar
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-core/1/grpc-core-1.jar
- name: $MAVEN_REPOSITORY$/io/perfmark/perfmark-api/0/perfmark-api-0.jar
- name: $MAVEN_REPOSITORY$/org/codehaus/mojo/animal-sniffer-annotations/1/animal-sniffer-annotations-1.jar
reason: <- intellij.grazie.core
- name: grpc-protobuf
files:
- name: $MAVEN_REPOSITORY$/com/google/api/grpc/proto-google-common-protos/2/proto-google-common-protos-2.jar
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-protobuf-lite/1/grpc-protobuf-lite-1.jar
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-protobuf/1/grpc-protobuf-1.jar
reason: <- intellij.grazie.core
- name: grpc-stub
files:
- name: $MAVEN_REPOSITORY$/io/grpc/grpc-stub/1/grpc-stub-1.jar
reason: <- intellij.grazie.core
modules:
- name: intellij.grazie
- name: intellij.grazie.core
reason: <- intellij.grazie
libraries:
ai.grazie.nlp.detect:
- name: $MAVEN_REPOSITORY$/ai/grazie/model/model-common-jvm/0/model-common-jvm-0.jar
- name: $MAVEN_REPOSITORY$/ai/grazie/model/model-text-jvm/0/model-text-jvm-0.jar
- name: $MAVEN_REPOSITORY$/ai/grazie/nlp/nlp-common-jvm/0/nlp-common-jvm-0.jar
- name: $MAVEN_REPOSITORY$/ai/grazie/nlp/nlp-detect-jvm/0/nlp-detect-jvm-0.jar
- name: $MAVEN_REPOSITORY$/ai/grazie/nlp/nlp-patterns-jvm/0/nlp-patterns-jvm-0.jar
- name: $MAVEN_REPOSITORY$/ai/grazie/nlp/nlp-similarity-jvm/0/nlp-similarity-jvm-0.jar
- name: $MAVEN_REPOSITORY$/ai/grazie/nlp/nlp-tokenizer-jvm/0/nlp-tokenizer-jvm-0.jar
- name: $MAVEN_REPOSITORY$/ai/grazie/utils/utils-common-jvm/0/utils-common-jvm-0.jar
- name: $MAVEN_REPOSITORY$/ai/grazie/utils/utils-json-jvm/0/utils-json-jvm-0.jar
ai.grazie.nlp.langs:
- name: $MAVEN_REPOSITORY$/ai/grazie/nlp/nlp-langs-jvm/0/nlp-langs-jvm-0.jar
ai.grazie.utils.lucene.lt.compatibility:
- name: $MAVEN_REPOSITORY$/ai/grazie/utils/utils-lucene-lt-compatibility-jvm/0/utils-lucene-lt-compatibility-jvm-0.jar
com.carrotsearch:hppc:
- name: $MAVEN_REPOSITORY$/com/carrotsearch/hppc/0/hppc-0.jar
com.hankcs:aho-corasick-double-array-trie:
- name: $MAVEN_REPOSITORY$/com/hankcs/aho-corasick-double-array-trie/1/aho-corasick-double-array-trie-1.jar
com.vdurmont:emoji-java:
- name: $MAVEN_REPOSITORY$/com/vdurmont/emoji-java/5/emoji-java-5.jar
org.languagetool:languagetool-core:
- name: $MAVEN_REPOSITORY$/edu/washington/cs/knowitall/openregex/1/openregex-1.jar
- name: $MAVEN_REPOSITORY$/org/languagetool/languagetool-core/6/languagetool-core-6.jar
javax.measure:unit-api:1.0:
- name: $MAVEN_REPOSITORY$/javax/measure/unit-api/1/unit-api-1.jar
net.loomchild:segment:2.0.1:
- name: $MAVEN_REPOSITORY$/net/loomchild/segment/2/segment-2.jar
org.carrot2:morfologik-fsa-builders:
- name: $MAVEN_REPOSITORY$/org/carrot2/morfologik-fsa-builders/2/morfologik-fsa-builders-2.jar
org.carrot2:morfologik-fsa:
- name: $MAVEN_REPOSITORY$/org/carrot2/morfologik-fsa/2/morfologik-fsa-2.jar
org.carrot2:morfologik-speller:
- name: $MAVEN_REPOSITORY$/org/carrot2/morfologik-speller/2/morfologik-speller-2.jar
org.carrot2:morfologik-stemming:
- name: $MAVEN_REPOSITORY$/org/carrot2/morfologik-stemming/2/morfologik-stemming-2.jar
org.json:json:
- name: $MAVEN_REPOSITORY$/org/json/json/20240205/json-20240205.jar
org.languagetool:language-en:
- name: $MAVEN_REPOSITORY$/org/languagetool/english-pos-dict/0/english-pos-dict-0.jar
- name: $MAVEN_REPOSITORY$/org/languagetool/language-en/6/language-en-6.jar
tech.units:indriya:1.3:
- name: $MAVEN_REPOSITORY$/tech/units/indriya/1/indriya-1.jar
tech.uom.lib:uom-lib-common:1.1:
- name: $MAVEN_REPOSITORY$/tech/uom/lib/uom-lib-common/1/uom-lib-common-1.jar
contentModules:
- name: intellij.grazie.java
- name: intellij.grazie.json
- name: intellij.grazie.markdown
- name: intellij.grazie.properties
- name: intellij.grazie.xml
- name: intellij.grazie.yaml

View File

@@ -0,0 +1,24 @@
- name: lib/Groovy.jar
modules:
- name: intellij.groovy
- name: intellij.groovy.duplicates
- name: intellij.groovy.duplicatesDetection
- name: intellij.groovy.psi
- name: intellij.groovy.structuralSearch
contentModules:
- name: intellij.groovy.git
- name: lib/groovy-constants-rt.jar
modules:
- name: intellij.groovy.constants.rt
- name: lib/groovy-jps.jar
modules:
- name: intellij.groovy.jps
- name: lib/groovy-rt-class-loader.jar
modules:
- name: intellij.groovy.rt.classLoader
- name: lib/groovy-rt.jar
modules:
- name: intellij.groovy.rt
- name: lib/groovy-spock-rt.jar
modules:
- name: intellij.groovy.spock.rt

View File

@@ -0,0 +1,3 @@
- name: lib/vcs-hg.jar
modules:
- name: intellij.vcs.hg

View File

@@ -0,0 +1,3 @@
- name: lib/html-tools.jar
modules:
- name: intellij.html.tools

View File

@@ -0,0 +1,20 @@
- name: lib/featuresTrainer.jar
projectLibraries:
- name: assertJ
files:
- name: $MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1/byte-buddy-1.jar
- name: $MAVEN_REPOSITORY$/org/assertj/assertj-core/3/assertj-core-3.jar
reason: <- intellij.featuresTrainer
- name: assertj-swing
files:
- name: $MAVEN_REPOSITORY$/org/assertj/assertj-swing/3/assertj-swing-3.jar
reason: <- intellij.featuresTrainer
- name: git-learning-project
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/ift/git-learning-project/212/git-learning-project-212.jar
reason: <- intellij.vcs.git.featuresTrainer
modules:
- name: intellij.featuresTrainer
contentModules:
- name: intellij.featuresTrainer.onboarding
- name: intellij.vcs.git.featuresTrainer

View File

@@ -0,0 +1,4 @@
- name: lib/java-decompiler.jar
modules:
- name: intellij.java.decompiler
- name: intellij.java.decompiler.engine

View File

@@ -0,0 +1,3 @@
- name: lib/java-i18n.jar
modules:
- name: intellij.java.i18n

View File

@@ -0,0 +1,8 @@
- name: lib/javaFX-community.jar
modules:
- name: intellij.javaFX.community
contentModules:
- name: intellij.javaFX.properties
- name: lib/modules/intellij.javaFX.jar
contentModules:
- name: intellij.javaFX

View File

@@ -0,0 +1,10 @@
- name: lib/jsonpath.jar
projectLibraries:
- name: jsonpath
files:
- name: $MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2/json-path-2.jar
- name: $MAVEN_REPOSITORY$/net/minidev/accessors-smart/2/accessors-smart-2.jar
- name: $MAVEN_REPOSITORY$/net/minidev/json-smart/2/json-smart-2.jar
reason: <- intellij.jsonpath
modules:
- name: intellij.jsonpath

View File

@@ -0,0 +1,9 @@
- name: lib/junit-rt.jar
modules:
- name: intellij.junit.rt
- name: lib/junit.jar
modules:
- name: intellij.junit
- name: lib/junit5-rt.jar
modules:
- name: intellij.junit.v5.rt

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-eclipse.jar
modules:
- name: intellij.keymap.eclipse

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-netbeans.jar
modules:
- name: intellij.keymap.netbeans

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-qtcreator.jar
modules:
- name: intellij.keymap.qtcreator

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-resharper.jar
modules:
- name: intellij.keymap.resharper

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-visualAssist.jar
modules:
- name: intellij.keymap.visualAssist

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-visualStudioForMac.jar
modules:
- name: intellij.keymap.visualStudioForMac

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-visualStudio.jar
modules:
- name: intellij.keymap.visualStudio

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-visualStudio2022.jar
modules:
- name: intellij.keymap.visualStudio2022

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-vscode.jar
modules:
- name: intellij.keymap.vscode

View File

@@ -0,0 +1,3 @@
- name: lib/keymap-xcode.jar
modules:
- name: intellij.keymap.xcode

View File

@@ -0,0 +1,351 @@
- name: lib/client/kotlin-frontend.jar
modules:
- name: kotlin.frontend
- name: lib/jps/kotlin-jps-plugin.jar
projectLibraries:
- name: kotlinc.kotlin-jps-plugin-classpath
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-jps-plugin-classpath/1/kotlin-jps-plugin-classpath-1.jar
reason: withProjectLibrary
- name: lib/kotlin-base-jps.jar
modules:
- name: kotlin.base.jps
- name: lib/kotlin-gradle-tooling.jar
projectLibraries:
- name: kotlin-gradle-plugin-idea
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-gradle-plugin-idea/1/kotlin-gradle-plugin-idea-1.jar
- name: kotlin-gradle-plugin-idea-proto
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-gradle-plugin-idea-proto/1/kotlin-gradle-plugin-idea-proto-1.jar
- name: kotlin-tooling-core
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-tooling-core/1/kotlin-tooling-core-1.jar
modules:
- name: kotlin.base.project-model
- name: kotlin.gradle.gradle-tooling.impl
- name: lib/kotlin-plugin-shared.jar
modules:
- name: kotlin.base.code-insight.minimal
- name: kotlin.base.resources
- name: kotlin.formatter.minimal
- name: kotlin.highlighting.minimal
- name: lib/kotlin-plugin.jar
projectLibraries:
- name: javaslang
files:
- name: $MAVEN_REPOSITORY$/io/javaslang/javaslang-match/2/javaslang-match-2.jar
- name: $MAVEN_REPOSITORY$/io/javaslang/javaslang/2/javaslang-2.jar
reason: withProjectLibrary
- name: javax-inject
files:
- name: $MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar
reason: withProjectLibrary
- name: kotlinc.analysis-api
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/analysis-api-for-ide/2/analysis-api-for-ide-2.jar
- name: kotlinc.analysis-api-fe10
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/analysis-api-fe10-for-ide/2/analysis-api-fe10-for-ide-2.jar
- name: kotlinc.analysis-api-impl-base
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/analysis-api-impl-base-for-ide/2/analysis-api-impl-base-for-ide-2.jar
- name: kotlinc.analysis-api-k2
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/analysis-api-k2-for-ide/2/analysis-api-k2-for-ide-2.jar
- name: kotlinc.analysis-api-platform-interface
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/analysis-api-platform-interface-for-ide/2/analysis-api-platform-interface-for-ide-2.jar
- name: kotlinc.kotlin-compiler-fir
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compiler-fir-for-ide/2/kotlin-compiler-fir-for-ide-2.jar
- name: kotlinc.kotlin-gradle-statistics
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-gradle-statistics-for-ide/2/kotlin-gradle-statistics-for-ide-2.jar
- name: kotlinc.kotlin-script-runtime
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-script-runtime/2/kotlin-script-runtime-2.jar
- name: kotlinc.kotlin-scripting-common
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-scripting-common/2/kotlin-scripting-common-2.jar
- name: kotlinc.kotlin-scripting-compiler-impl
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-scripting-compiler-impl/2/kotlin-scripting-compiler-impl-2.jar
- name: kotlinc.kotlin-scripting-jvm
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-scripting-jvm/2/kotlin-scripting-jvm-2.jar
- name: kotlinc.low-level-api-fir
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/low-level-api-fir-for-ide/2/low-level-api-fir-for-ide-2.jar
- name: kotlinc.symbol-light-classes
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/symbol-light-classes-for-ide/2/symbol-light-classes-for-ide-2.jar
modules:
- name: kotlin-ultimate.common-native
- name: kotlin-ultimate.javascript.debugger
- name: kotlin-ultimate.javascript.nodeJs
- name: kotlin-ultimate.profiler
- name: kotlin-ultimate.ultimate-native
- name: kotlin-ultimate.ultimate-plugin
- name: kotlin.base.analysis
- name: kotlin.base.analysis-api-platform
- name: kotlin.base.analysis-api.utils
- name: kotlin.base.code-insight
- name: kotlin.base.compiler-configuration
- name: kotlin.base.compiler-configuration-ui
- name: kotlin.base.external-build-system
- name: kotlin.base.facet
- name: kotlin.base.fe10.analysis
- name: kotlin.base.fe10.analysis-api-platform
- name: kotlin.base.fe10.code-insight
- name: kotlin.base.fe10.kdoc
- name: kotlin.base.fe10.obsolete-compat
- name: kotlin.base.fe10.plugin
- name: kotlin.base.fe10.project-structure
- name: kotlin.base.fir.analysis-api-platform
- name: kotlin.base.fir.code-insight
- name: kotlin.base.fir.project-structure
- name: kotlin.base.indices
- name: kotlin.base.injection
- name: kotlin.base.kdoc
- name: kotlin.base.obsolete-compat
- name: kotlin.base.platforms
- name: kotlin.base.plugin
- name: kotlin.base.project-structure
- name: kotlin.base.psi
- name: kotlin.base.scripting
- name: kotlin.base.statistics
- name: kotlin.base.util
- name: kotlin.bundled-compiler-plugins-support
- name: kotlin.code-insight.api
- name: kotlin.code-insight.descriptions
- name: kotlin.code-insight.fixes.k2
- name: kotlin.code-insight.impl-base
- name: kotlin.code-insight.inspections.k1
- name: kotlin.code-insight.inspections.k2
- name: kotlin.code-insight.inspections.shared
- name: kotlin.code-insight.intentions.k1
- name: kotlin.code-insight.intentions.k2
- name: kotlin.code-insight.intentions.shared
- name: kotlin.code-insight.k1
- name: kotlin.code-insight.k2
- name: kotlin.code-insight.line-markers.k2
- name: kotlin.code-insight.line-markers.shared
- name: kotlin.code-insight.live-templates.k1
- name: kotlin.code-insight.live-templates.k2
- name: kotlin.code-insight.live-templates.shared
- name: kotlin.code-insight.override-implement.k1
- name: kotlin.code-insight.override-implement.k2
- name: kotlin.code-insight.override-implement.shared
- name: kotlin.code-insight.postfix-templates.k1
- name: kotlin.code-insight.postfix-templates.k2
- name: kotlin.code-insight.structural-search.k1
- name: kotlin.code-insight.structural-search.k2
- name: kotlin.code-insight.utils
- name: kotlin.compiler-plugins.allopen.common.k1
- name: kotlin.compiler-plugins.allopen.gradle
- name: kotlin.compiler-plugins.allopen.maven
- name: kotlin.compiler-plugins.android-extensions-stubs
- name: kotlin.compiler-plugins.assignment.common.k1
- name: kotlin.compiler-plugins.assignment.common.k2
- name: kotlin.compiler-plugins.assignment.gradle
- name: kotlin.compiler-plugins.assignment.maven
- name: kotlin.compiler-plugins.compiler-plugin-support.common
- name: kotlin.compiler-plugins.compiler-plugin-support.gradle
- name: kotlin.compiler-plugins.compiler-plugin-support.maven
- name: kotlin.compiler-plugins.kapt
- name: kotlin.compiler-plugins.kotlinx-serialization.common
- name: kotlin.compiler-plugins.kotlinx-serialization.gradle
- name: kotlin.compiler-plugins.kotlinx-serialization.maven
- name: kotlin.compiler-plugins.lombok.gradle
- name: kotlin.compiler-plugins.lombok.maven
- name: kotlin.compiler-plugins.noarg.common
- name: kotlin.compiler-plugins.noarg.gradle
- name: kotlin.compiler-plugins.noarg.maven
- name: kotlin.compiler-plugins.parcelize.common
- name: kotlin.compiler-plugins.parcelize.gradle
- name: kotlin.compiler-plugins.parcelize.k1
- name: kotlin.compiler-plugins.parcelize.k2
- name: kotlin.compiler-plugins.sam-with-receiver.common
- name: kotlin.compiler-plugins.sam-with-receiver.gradle
- name: kotlin.compiler-plugins.sam-with-receiver.maven
- name: kotlin.compiler-plugins.scripting
- name: kotlin.compiler-reference-index
- name: kotlin.completion.api
- name: kotlin.completion.impl.k1
- name: kotlin.completion.impl.k2
- name: kotlin.completion.impl.shared
- name: kotlin.copyright
- name: kotlin.core
- name: kotlin.coverage
- name: kotlin.features-trainer
- name: kotlin.fir
- name: kotlin.fir.fir-low-level-api-ide-impl
libraries:
opentest4j:
- name: $MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1/opentest4j-1.jar
- name: kotlin.fir.frontend-independent
- name: kotlin.formatter
- name: kotlin.git
- name: kotlin.gradle.code-insight-common
- name: kotlin.gradle.code-insight-groovy
- name: kotlin.gradle.code-insight-toml
- name: kotlin.gradle.gradle
- name: kotlin.gradle.gradle-java
- name: kotlin.gradle.gradle-tooling
- name: kotlin.grazie
- name: kotlin.highlighting.k1
- name: kotlin.highlighting.k2
- name: kotlin.highlighting.shared
- name: kotlin.i18n
- name: kotlin.ide
- name: kotlin.idea
- name: kotlin.injection.k1
- name: kotlin.injection.k2
- name: kotlin.inspections
- name: kotlin.inspections-fe10
- name: kotlin.j2k.k1.new
- name: kotlin.j2k.k1.new.post-processing
- name: kotlin.j2k.k1.old
- name: kotlin.j2k.k1.old.post-processing
- name: kotlin.j2k.k2
- name: kotlin.j2k.shared
- name: kotlin.jsr223
- name: kotlin.jvm
- name: kotlin.jvm-debugger.base.util
- name: kotlin.jvm-debugger.core
- name: kotlin.jvm-debugger.core-fe10
- name: kotlin.jvm-debugger.coroutines
- name: kotlin.jvm-debugger.eval4j
- name: kotlin.jvm-debugger.evaluation
- name: kotlin.jvm-debugger.evaluation.k1
- name: kotlin.jvm-debugger.sequence.k1
- name: kotlin.jvm-decompiler
- name: kotlin.maven
- name: kotlin.migration
- name: kotlin.ml-completion
libraries:
completion-ranking-kotlin:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-kotlin/0/completion-ranking-kotlin-0.jar
- name: kotlin.native
- name: kotlin.navigation
- name: kotlin.onboarding
- name: kotlin.onboarding.gradle
- name: kotlin.performanceExtendedPlugin
- name: kotlin.plugin
- name: kotlin.plugin-updater
- name: kotlin.plugin.common
- name: kotlin.plugin.k1
- name: kotlin.plugin.k2
- name: kotlin.preferences
- name: kotlin.project-configuration
- name: kotlin.project-wizard.cli
- name: kotlin.project-wizard.compose
- name: kotlin.project-wizard.core
- name: kotlin.project-wizard.gradle
- name: kotlin.project-wizard.idea
- name: kotlin.project-wizard.idea.k1
- name: kotlin.project-wizard.maven
- name: kotlin.refactorings.common
- name: kotlin.refactorings.k2
- name: kotlin.refactorings.move.k2
- name: kotlin.refactorings.rename.k2
- name: kotlin.repl
- name: kotlin.run-configurations.junit
- name: kotlin.run-configurations.junit-fe10
- name: kotlin.run-configurations.jvm
- name: kotlin.run-configurations.testng
- name: kotlin.scripting
- name: kotlin.searching.base
- name: kotlin.searching.k2
- name: kotlin.spellchecker
- name: kotlin.uast.uast-kotlin
- name: kotlin.uast.uast-kotlin-base
- name: kotlin.uast.uast-kotlin-idea
- name: kotlin.uast.uast-kotlin-idea-base
- name: kotlin.uast.uast-kotlin-idea.k2
- name: kotlin.uast.uast-kotlin.k2
- name: lib/kotlinc.allopen-compiler-plugin.jar
projectLibraries:
- name: kotlinc.allopen-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/allopen-compiler-plugin-for-ide/2/allopen-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.android-extensions-compiler-plugin.jar
projectLibraries:
- name: kotlinc.android-extensions-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/android-extensions-compiler-plugin-for-ide/2/android-extensions-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.assignment-compiler-plugin.jar
projectLibraries:
- name: kotlinc.assignment-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/assignment-compiler-plugin-for-ide/2/assignment-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.compose-compiler-plugin.jar
projectLibraries:
- name: kotlinc.compose-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/compose-compiler-plugin-for-ide/2/compose-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.kotlin-compiler-common.jar
projectLibraries:
- name: kotlinc.kotlin-compiler-common
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compiler-common-for-ide/2/kotlin-compiler-common-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.kotlin-compiler-fe10.jar
projectLibraries:
- name: kotlinc.kotlin-compiler-fe10
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compiler-fe10-for-ide/2/kotlin-compiler-fe10-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.kotlin-compiler-ir.jar
projectLibraries:
- name: kotlinc.kotlin-compiler-ir
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compiler-ir-for-ide/2/kotlin-compiler-ir-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.kotlin-jps-common.jar
projectLibraries:
- name: kotlinc.kotlin-jps-common
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-jps-common-for-ide/2/kotlin-jps-common-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.kotlinx-serialization-compiler-plugin.jar
projectLibraries:
- name: kotlinc.kotlinx-serialization-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlinx-serialization-compiler-plugin-for-ide/2/kotlinx-serialization-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.lombok-compiler-plugin.jar
projectLibraries:
- name: kotlinc.lombok-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/lombok-compiler-plugin-for-ide/2/lombok-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.noarg-compiler-plugin.jar
projectLibraries:
- name: kotlinc.noarg-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/noarg-compiler-plugin-for-ide/2/noarg-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.parcelize-compiler-plugin.jar
projectLibraries:
- name: kotlinc.parcelize-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/parcelize-compiler-plugin-for-ide/2/parcelize-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.sam-with-receiver-compiler-plugin.jar
projectLibraries:
- name: kotlinc.sam-with-receiver-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/sam-with-receiver-compiler-plugin-for-ide/2/sam-with-receiver-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.scripting-compiler-plugin.jar
projectLibraries:
- name: kotlinc.scripting-compiler-plugin
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/scripting-compiler-plugin-for-ide/2/scripting-compiler-plugin-for-ide-2.jar
reason: withProjectLibrary

View File

@@ -0,0 +1,23 @@
- name: lib/kotlin-scripting-plugin.jar
projectLibraries:
- name: kotlinc.kotlin-script-runtime
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-script-runtime/2/kotlin-script-runtime-2.jar
- name: kotlinc.kotlin-scripting-jvm
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-scripting-jvm/2/kotlin-scripting-jvm-2.jar
modules:
- name: kotlin.jsr223
- name: kotlin.scripting-plugin
- name: lib/kotlinc.kotlin-compiler-common.jar
projectLibraries:
- name: kotlinc.kotlin-compiler-common
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compiler-common-for-ide/2/kotlin-compiler-common-for-ide-2.jar
reason: withProjectLibrary
- name: lib/kotlinc.kotlin-compiler-fe10.jar
projectLibraries:
- name: kotlinc.kotlin-compiler-fe10
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-compiler-fe10-for-ide/2/kotlin-compiler-fe10-for-ide-2.jar
reason: withProjectLibrary

View File

@@ -0,0 +1,3 @@
- name: lib/laf-macos.jar
modules:
- name: intellij.laf.macos

View File

@@ -0,0 +1,3 @@
- name: lib/laf-win10.jar
modules:
- name: intellij.laf.win10

View File

@@ -0,0 +1,4 @@
- name: lib/lombok.jar
modules:
- name: intellij.lombok
- name: intellij.lombok.generated

View File

@@ -0,0 +1,12 @@
- name: lib/markdown.jar
modules:
- name: intellij.markdown
contentModules:
- name: intellij.markdown.fenceInjection
- name: intellij.markdown.frontmatter
- name: intellij.markdown.frontmatter.toml
- name: intellij.markdown.frontmatter.yaml
- name: intellij.markdown.images
- name: intellij.markdown.model
- name: intellij.markdown.spellchecker
- name: intellij.markdown.xml

View File

@@ -0,0 +1,3 @@
- name: lib/marketplaceMl.jar
modules:
- name: intellij.marketplaceMl

View File

@@ -0,0 +1,8 @@
- name: lib/maven-model.jar
projectLibraries:
- name: jetbrains-annotations-java5
files:
- name: $MAVEN_REPOSITORY$/org/jetbrains/annotations-java5/24/annotations-java5-24.jar
reason: <- intellij.maven.model
modules:
- name: intellij.maven.model

View File

@@ -0,0 +1,3 @@
- name: lib/maven-server.jar
modules:
- name: intellij.maven.server

View File

@@ -0,0 +1,42 @@
- name: lib/artifact-resolver-m31.jar
modules:
- name: intellij.maven.artifactResolver.common
- name: intellij.maven.artifactResolver.m31
- name: lib/intellij.maven.server.indexer/lib/apache.maven.archetype.catalog-no-trans-321.jar
- name: lib/intellij.maven.server.indexer/lib/apache.maven.archetype.common-no-trans-3.2.1.jar
- name: lib/intellij.maven.server.indexer/lib/apache.maven.core-3.8.3.jar
- name: lib/intellij.maven.server.indexer/lib/apache.maven.wagon.provider.api-3.5.2.jar
- name: lib/maven-event-listener.jar
modules:
- name: intellij.maven.server.eventListener
- name: lib/maven-jps.jar
modules:
- name: intellij.maven.jps
- name: lib/maven-server-indexer.jar
modules:
- name: intellij.maven.server.indexer
- name: lib/maven-server-telemetry.jar
modules:
- name: intellij.maven.server.telemetry
- name: lib/maven.jar
modules:
- name: intellij.idea.community.build.dependencies
- name: intellij.maven
libraries:
plexus-archiver:
- name: $MAVEN_REPOSITORY$/org/codehaus/plexus/plexus-archiver/4/plexus-archiver-4.jar
jetbrains.idea.maven.indexer.api.rt:
- name: $MAVEN_REPOSITORY$/org/jetbrains/idea/maven/maven-indexer-api-rt/2023/maven-indexer-api-rt-2023.jar
- name: intellij.maven.errorProne.compiler
- name: lib/maven3-server-common.jar
modules:
- name: intellij.maven.server.m3.common
- name: lib/maven3-server.jar
modules:
- name: intellij.maven.server.m3.impl
- name: lib/maven36-server.jar
modules:
- name: intellij.maven.server.m36.impl
- name: lib/maven40-server.jar
modules:
- name: intellij.maven.server.m40

View File

@@ -0,0 +1,23 @@
- name: lib/performanceTesting.jar
projectLibraries:
- name: assertJ
files:
- name: $MAVEN_REPOSITORY$/net/bytebuddy/byte-buddy/1/byte-buddy-1.jar
- name: $MAVEN_REPOSITORY$/org/assertj/assertj-core/3/assertj-core-3.jar
reason: <- intellij.performanceTesting.remoteDriver
- name: assertj-swing
files:
- name: $MAVEN_REPOSITORY$/org/assertj/assertj-swing/3/assertj-swing-3.jar
reason: <- intellij.performanceTesting.remoteDriver
modules:
- name: intellij.driver.client
- name: intellij.driver.impl
- name: intellij.driver.model
- name: intellij.performanceTesting
libraries:
github.oshi.core:
- name: $MAVEN_REPOSITORY$/com/github/oshi/oshi-core/6/oshi-core-6.jar
- name: intellij.tools.ide.starter.bus
contentModules:
- name: intellij.performanceTesting.remoteDriver
- name: intellij.performanceTesting.vcs

View File

@@ -0,0 +1,3 @@
- name: lib/performanceTesting-ui.jar
modules:
- name: intellij.performanceTesting.ui

View File

@@ -0,0 +1,7 @@
- name: lib/properties.jar
modules:
- name: intellij.properties
- name: intellij.properties.psi
reason: <- intellij.properties
- name: intellij.properties.psi.impl
reason: <- intellij.properties

View File

@@ -0,0 +1,3 @@
- name: lib/properties-resource-bundle-editor.jar
modules:
- name: intellij.properties.resource.bundle.editor

View File

@@ -0,0 +1,3 @@
- name: lib/java-rareRefactorings.jar
modules:
- name: intellij.java.rareRefactorings

View File

@@ -0,0 +1,3 @@
- name: lib/remoteControl.jar
modules:
- name: intellij.remoteControl

View File

@@ -0,0 +1,16 @@
- name: lib/repository-search.jar
projectLibraries:
- name: ktor-client-logging
files:
- name: $MAVEN_REPOSITORY$/io/ktor/ktor-client-logging-jvm/2/ktor-client-logging-jvm-2.jar
reason: <- intellij.repository.search
- name: package-search-api-client
files:
- name: $MAVEN_REPOSITORY$/com/soywiz/korlibs/krypto/krypto-jvm/4/krypto-jvm-4.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-client-jvm/3/packagesearch-api-client-jvm-3.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-api-models-jvm/3/packagesearch-api-models-jvm-3.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-http-models-jvm/3/packagesearch-http-models-jvm-3.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/packagesearch/packagesearch-version-utils-jvm/3/packagesearch-version-utils-jvm-3.jar
reason: <- intellij.repository.search
modules:
- name: intellij.repository.search

View File

@@ -0,0 +1,39 @@
- name: lib/modules/intellij.searchEverywhereMl.ranking.core.jar
contentModules:
- name: intellij.searchEverywhereMl.ranking.core
libraries:
find-action-model:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/searchEverywhere/model/find-action-model/231.0.0/find-action-model-231.0.0.jar
size: 236768
find-action-model-experimental:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/searchEverywhere/model/find-action-model/233.0.1/find-action-model-233.0.1.jar
size: 314360
find-all-model-experimental:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/searchEverywhere/model/find-all-model/232.1.1/find-all-model-232.1.1.jar
size: 188471
find-classes-model:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/searchEverywhere/model/find-classes-model/231.0.0/find-classes-model-231.0.0.jar
size: 146583
find-classes-model-experimental:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/searchEverywhere/model/find-classes-model/233.1.1/find-classes-model-233.1.1.jar
size: 527225
find-file-model:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/searchEverywhere/model/find-file-model/232.1.1/find-file-model-232.1.1.jar
size: 70478
find-file-model-experimental:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/searchEverywhere/model/find-file-model/233.1.1/find-file-model-233.1.1.jar
size: 139933
- name: lib/searchEverywhereMl.jar
modules:
- name: intellij.searchEverywhereMl
contentModules:
- name: intellij.searchEverywhereMl.ranking.ext
- name: intellij.searchEverywhereMl.ranking.java
- name: intellij.searchEverywhereMl.ranking.vcs
- name: intellij.searchEverywhereMl.ranking.yaml
- name: intellij.searchEverywhereMl.semantics
- name: intellij.searchEverywhereMl.semantics.java
- name: intellij.searchEverywhereMl.semantics.kotlin
- name: intellij.searchEverywhereMl.semantics.python
- name: intellij.searchEverywhereMl.semantics.testCommands
- name: intellij.searchEverywhereMl.typos

View File

@@ -0,0 +1,14 @@
- name: lib/settingsRepository.jar
projectLibraries:
- name: jetbrains.intellij.deps.eclipse.jgit
files:
- name: $MAVEN_REPOSITORY$/com/googlecode/javaewah/JavaEWAH/1/JavaEWAH-1.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/org.eclipse.jgit/6/org.eclipse.jgit-6.jar
reason: <- intellij.settingsRepository
modules:
- name: intellij.settingsRepository
libraries:
JSch:
- name: $MAVEN_REPOSITORY$/com/jcraft/jsch/0/jsch-0.jar
eclipse.jgit.ssh.jsch:
- name: $MAVEN_REPOSITORY$/org/eclipse/jgit/org.eclipse.jgit.ssh.jsch/6/org.eclipse.jgit.ssh.jsch-6.jar

View File

@@ -0,0 +1,11 @@
- name: lib/settingsSync.jar
projectLibraries:
- name: jetbrains.intellij.deps.eclipse.jgit
files:
- name: $MAVEN_REPOSITORY$/com/googlecode/javaewah/JavaEWAH/1/JavaEWAH-1.jar
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/org.eclipse.jgit/6/org.eclipse.jgit-6.jar
reason: <- intellij.settingsSync
modules:
- name: intellij.settingsSync
contentModules:
- name: intellij.settingsSync.git

View File

@@ -0,0 +1,10 @@
- name: lib/sh.jar
modules:
- name: intellij.sh
- name: intellij.sh.core
reason: <- intellij.sh
contentModules:
- name: intellij.sh.copyright
- name: intellij.sh.markdown
- name: intellij.sh.python
- name: intellij.sh.terminal

View File

@@ -0,0 +1,6 @@
- name: lib/statsCollector.jar
modules:
- name: intellij.statsCollector
libraries:
completion-log-events:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-log-events/0/completion-log-events-0.jar

View File

@@ -0,0 +1,3 @@
- name: lib/java-debugger-streams.jar
modules:
- name: intellij.java.debugger.streams

View File

@@ -0,0 +1,8 @@
- name: lib/vcs-svn.jar
projectLibraries:
- name: sqlite
files:
- name: $MAVEN_REPOSITORY$/org/xerial/sqlite-jdbc/3/sqlite-jdbc-3.jar
reason: <- intellij.vcs.svn
modules:
- name: intellij.vcs.svn

View File

@@ -0,0 +1,29 @@
- name: lib/tasks-core.jar
projectLibraries:
- name: XmlRPC
files:
- name: $MAVEN_REPOSITORY$/org/apache/ws/xmlrpc/xmlrpc/2/xmlrpc-2.jar
reason: <- intellij.tasks.jira
- name: jsonpath
files:
- name: $MAVEN_REPOSITORY$/com/jayway/jsonpath/json-path/2/json-path-2.jar
- name: $MAVEN_REPOSITORY$/net/minidev/accessors-smart/2/accessors-smart-2.jar
- name: $MAVEN_REPOSITORY$/net/minidev/json-smart/2/json-smart-2.jar
reason: <- intellij.tasks.core
modules:
- name: intellij.tasks
- name: intellij.tasks.compatibility
libraries:
http-client-3.1:
- name: $PROJECT_DIR$/community/lib/commons-httpclient-3.jar
- name: intellij.tasks.core
libraries:
commons-discovery:
- name: $MAVEN_REPOSITORY$/commons-discovery/commons-discovery/0/commons-discovery-0.jar
axis-1.4:
- name: $PROJECT_DIR$/community/plugins/tasks/tasks-core/lib/axis-1.jar
- name: $PROJECT_DIR$/community/plugins/tasks/tasks-core/lib/axis-jaxrpc-1.jar
- name: $PROJECT_DIR$/community/plugins/tasks/tasks-core/lib/axis-saaj-1.jar
- name: $PROJECT_DIR$/community/plugins/tasks/tasks-core/lib/wsdl4j-1.jar
- name: intellij.tasks.java
- name: intellij.tasks.jira

View File

@@ -0,0 +1,14 @@
- name: lib/terminal.jar
modules:
- name: intellij.terminal
libraries:
completion-ranking-sh:
- name: $MAVEN_REPOSITORY$/org/jetbrains/intellij/deps/completion/completion-ranking-sh/0/completion-ranking-sh-0.jar
terminal-completion-db-with-extensions:
- name: $MAVEN_REPOSITORY$/org/jetbrains/terminal/completion-db-with-extensions/0/completion-db-with-extensions-0.jar
- name: intellij.terminal.completion
libraries:
terminal-completion-spec:
- name: $MAVEN_REPOSITORY$/org/jetbrains/terminal/completion-spec/0/completion-spec-0.jar
contentModules:
- name: intellij.terminal.sh

Some files were not shown because too many files have changed in this diff Show More