Build: Add JPS artifact for dist

This commit is contained in:
Vyacheslav Gerasimov
2019-05-15 16:43:11 +03:00
parent 86ad25ba55
commit 72be81ba46
4 changed files with 83 additions and 71 deletions
+1
View File
@@ -36,6 +36,7 @@ build/
.idea/inspectionProfiles/profiles_settings.xml
.idea/.name
.idea/artifacts/dist_auto_*
.idea/artifacts/dist.xml
.idea/artifacts/ideaPlugin.xml
.idea/artifacts/kotlin_plugin_jar.xml
.idea/artifacts/kotlin_jps_plugin_jar.xml
-27
View File
@@ -1,27 +0,0 @@
<component name="ArtifactManager">
<artifact build-on-make="true" name="dist">
<output-path>$PROJECT_DIR$/dist</output-path>
<root id="root">
<element id="directory" name="artifacts">
<element id="directory" name="ideaPlugin">
<element id="artifact" artifact-name="ideaPlugin" />
</element>
</element>
<element id="file-copy" path="$PROJECT_DIR$/build/build.txt" />
<element id="file-copy" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-minimal-for-test/1.3.50-dev-526/7c531c6c6db03b6ebf0ff0e15027bb6aee5d2452/kotlin-stdlib-minimal-for-test-1.3.50-dev-526.jar" output-file-name="kotlin-stdlib-minimal-for-test.jar" />
<element id="directory" name="common">
<element id="file-copy" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.50-dev-526/7a06077a97c805bc4d99aaa17c8e8accf86bfe7c/kotlin-stdlib-common-1.3.50-dev-526.jar" output-file-name="kotlin-stdlib-common.jar" />
<element id="file-copy" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.50-dev-526/784cfd305e170c525b1a6987584dd8bebc4e0e6a/kotlin-stdlib-common-1.3.50-dev-526-sources.jar" output-file-name="kotlin-stdlib-common-sources.jar" />
</element>
<element id="directory" name="js">
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-js/1.3.50-dev-526/8a798b744fdbd46a7d93814f0f0b97c664c064d2/kotlin-stdlib-js-1.3.50-dev-526.jar" path-in-jar="/" />
</element>
<element id="directory" name="maven">
<element id="file-copy" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.50-dev-526/21e04af851994238d364653c103df336bf45fd4d/kotlin-stdlib-1.3.50-dev-526-sources.jar" output-file-name="kotlin-stdlib-sources.jar" />
</element>
<element id="directory" name="kotlinc">
<element id="artifact" artifact-name="kotlinc" />
</element>
</root>
</artifact>
</component>
+56 -3
View File
@@ -74,6 +74,8 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) {
kotlinJpsPluginJar()
ideaPlugin()
dist()
}
compiler {
@@ -210,6 +212,57 @@ fun NamedDomainObjectContainer<TopLevelArtifact>.kotlinJpsPluginJar() {
}
}
fun NamedDomainObjectContainer<TopLevelArtifact>.dist() {
val distLibrariesProject = project(":kotlin-stdlib:jps-build")
val stdlibMinimal by distLibrariesProject.configurations
val commonStdlib by distLibrariesProject.configurations
val commonStdlibSources by distLibrariesProject.configurations
val stdlibJS by distLibrariesProject.configurations
val stdlibSources by distLibrariesProject.configurations
create("dist") {
file("$rootDir/build/build.txt")
// Use output-file-name when fixed https://github.com/JetBrains/gradle-idea-ext-plugin/issues/63
archive("kotlin-stdlib-minimal-for-test.jar") {
extractedDirectory(stdlibMinimal.singleFile)
}
directory("artifacts") {
directory("ideaPlugin") {
artifact("ideaPlugin")
}
}
directory("common") {
// Use output-file-name when fixed https://github.com/JetBrains/gradle-idea-ext-plugin/issues/63
archive("kotlin-stdlib-common.jar") {
extractedDirectory(commonStdlib.singleFile)
}
// Use output-file-name when fixed https://github.com/JetBrains/gradle-idea-ext-plugin/issues/63
archive("kotlin-stdlib-common-sources.jar") {
extractedDirectory(commonStdlibSources.singleFile)
}
}
directory("js") {
extractedDirectory(stdlibJS.singleFile)
}
directory("kotlinc") {
artifact("kotlinc")
}
directory("maven") {
// Use output-file-name when fixed https://github.com/JetBrains/gradle-idea-ext-plugin/issues/63
archive("kotlin-stdlib-sources.jar") {
extractedDirectory(stdlibSources.singleFile)
}
}
}
}
fun NamedDomainObjectContainer<TopLevelArtifact>.ideaPlugin() {
val ideaPluginProject = project(":prepare:idea-plugin")
(ideaPluginProject as ProjectInternal).evaluate()
@@ -225,10 +278,10 @@ fun NamedDomainObjectContainer<TopLevelArtifact>.ideaPlugin() {
directory("lib") {
artifact("kotlin-plugin.jar")
directoryFromConfiguration(libraries)
jarsFromConfiguration(libraries)
directory("jps") {
directoryFromConfiguration(jpsPlugin)
jarsFromConfiguration(jpsPlugin)
}
}
}
@@ -276,7 +329,7 @@ fun RecursiveArtifact.jarContentsFromEmbeddedConfiguration(project: Project) {
}
}
fun RecursiveArtifact.directoryFromConfiguration(configuration: Configuration) {
fun RecursiveArtifact.jarsFromConfiguration(configuration: Configuration) {
val resolvedArtifacts = configuration
.resolvedConfiguration
.resolvedArtifacts
+26 -41
View File
@@ -4,66 +4,51 @@ import java.util.regex.Pattern
description = "Stdlib configuration for JPS build (to be interpreted during IDEA project import)"
val distLib by configurations.creating
val distCommon by configurations.creating
val distRoot by configurations.creating
val stdlibMinimal by configurations.creating
val stdlibJS by configurations.creating
val stdlibSources by configurations.creating
val compilerLib by configurations.creating
val commonStdlib by configurations.creating
val commonStdlibSources by configurations.creating
val builtins by configurations.creating
dependencies {
distRoot("org.jetbrains.kotlin:kotlin-stdlib-minimal-for-test:$bootstrapKotlinVersion")
stdlibMinimal("org.jetbrains.kotlin:kotlin-stdlib-minimal-for-test:$bootstrapKotlinVersion")
stdlibJS("org.jetbrains.kotlin:kotlin-stdlib-js:$bootstrapKotlinVersion") { isTransitive = false }
stdlibSources("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion:sources") { isTransitive = false }
builtins("org.jetbrains.kotlin:builtins:$bootstrapKotlinVersion")
distLib("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion")
distLib("org.jetbrains.kotlin:kotlin-stdlib-js:$bootstrapKotlinVersion")
distLib("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$bootstrapKotlinVersion")
distLib("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$bootstrapKotlinVersion")
compilerLib("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion")
compilerLib("org.jetbrains.kotlin:kotlin-stdlib-js:$bootstrapKotlinVersion")
compilerLib("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$bootstrapKotlinVersion")
compilerLib("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$bootstrapKotlinVersion")
distLib("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion:sources")
distLib("org.jetbrains.kotlin:kotlin-stdlib-js:$bootstrapKotlinVersion:sources")
distLib("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$bootstrapKotlinVersion:sources")
distLib("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$bootstrapKotlinVersion:sources")
compilerLib("org.jetbrains.kotlin:kotlin-stdlib:$bootstrapKotlinVersion:sources")
compilerLib("org.jetbrains.kotlin:kotlin-stdlib-js:$bootstrapKotlinVersion:sources")
compilerLib("org.jetbrains.kotlin:kotlin-stdlib-jdk7:$bootstrapKotlinVersion:sources")
compilerLib("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$bootstrapKotlinVersion:sources")
distCommon("org.jetbrains.kotlin:kotlin-stdlib-common:$bootstrapKotlinVersion")
distCommon("org.jetbrains.kotlin:kotlin-stdlib-common:$bootstrapKotlinVersion:sources")
commonStdlib("org.jetbrains.kotlin:kotlin-stdlib-common:$bootstrapKotlinVersion")
commonStdlibSources("org.jetbrains.kotlin:kotlin-stdlib-common:$bootstrapKotlinVersion:sources")
}
val distDir: String by rootProject.extra
val distLibDir: File by rootProject.extra
fun TopLevelArtifact.addFromConfiguration(configuration: Configuration) {
configuration.resolve().forEach {
file(it)
}
}
afterEvaluate {
rootProject.idea {
project {
settings {
ideArtifacts {
create("dist_auto_stdlib_reference_dont_use") {
addFromConfiguration(distRoot)
addFromConfiguration(distCommon)
addFromConfiguration(distLib)
addFromConfiguration(builtins)
}
}
}
}
}
}
task<Copy>("distRoot") {
destinationDir = File(distDir)
dependsOn(distRoot)
from(distRoot)
dependsOn(stdlibMinimal)
from(stdlibMinimal)
rename("-${Pattern.quote(bootstrapKotlinVersion)}", "")
}
task<Copy>("distLib") {
destinationDir = distLibDir
dependsOn(distLib)
from(distLib)
dependsOn(compilerLib)
from(compilerLib)
rename("-${Pattern.quote(bootstrapKotlinVersion)}", "")
}