Build: Add jps artifact for kotlin-daemon-client.jar

This commit is contained in:
Vyacheslav Gerasimov
2019-04-11 21:50:53 +03:00
parent 12b4cf3f0e
commit d24c56e08d
3 changed files with 26 additions and 41 deletions
+25 -14
View File
@@ -59,6 +59,8 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) {
ideArtifacts {
generateIdeArtifacts(rootProject, this@ideArtifacts)
kotlinDaemonClientJar()
kotlinJpsPluginJar()
ideaPlugin()
@@ -163,19 +165,13 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) {
}
}
fun NamedDomainObjectContainer<TopLevelArtifact>.kotlinDaemonClientJar() =
jarFromProject(project(":kotlin-daemon-client"))
fun NamedDomainObjectContainer<TopLevelArtifact>.kotlinJpsPluginJar() {
val jpsPluginProject = project(":kotlin-jps-plugin")
create("kotlin-jps-plugin.jar") {
archive("kotlin-jps-plugin.jar") {
directory("META-INF") {
file("${jpsPluginProject.buildDir}/tmp/jar/MANIFEST.MF")
}
jarFromEmbedded(jpsPluginProject)
file("${jpsPluginProject.rootDir}/resources/kotlinManifest.properties")
}
jarFromProject(jpsPluginProject) {
file("${jpsPluginProject.rootDir}/resources/kotlinManifest.properties")
}
}
@@ -199,7 +195,7 @@ fun NamedDomainObjectContainer<TopLevelArtifact>.ideaPlugin() {
file("${ideaPluginProject.rootDir}/resources/kotlinManifest.properties")
jarFromEmbedded(ideaPluginProject)
jarContentsFromEmbeddedConfiguration(ideaPluginProject)
}
directoryFromConfiguration(libraries)
@@ -212,6 +208,21 @@ fun NamedDomainObjectContainer<TopLevelArtifact>.ideaPlugin() {
}
}
fun NamedDomainObjectContainer<TopLevelArtifact>.jarFromProject(project: Project, configureAction: RecursiveArtifact.() -> Unit = {}) {
val jarName = project.name + ".jar"
create(jarName) {
archive(jarName) {
directory("META-INF") {
file("${project.buildDir}/tmp/jar/MANIFEST.MF")
}
jarContentsFromEmbeddedConfiguration(project)
configureAction()
}
}
}
val jarArtifactProjects = listOf(
"kotlin-compiler-client-embeddable",
"kotlin-compiler",
@@ -224,7 +235,7 @@ val jarArtifactProjects = listOf(
fun moduleName(projectPath: String) = rootProject.name + projectPath.replace(':', '.') + ".main"
fun RecursiveArtifact.jarFromEmbedded(project: Project) {
fun RecursiveArtifact.jarContentsFromEmbeddedConfiguration(project: Project) {
val embedded = project.configurations.findByName("embedded") ?: return
val resolvedArtifacts = embedded
@@ -240,7 +251,7 @@ fun RecursiveArtifact.jarFromEmbedded(project: Project) {
.filterIsInstance<ProjectComponentIdentifier>()
.forEach {
moduleOutput(moduleName(it.projectPath))
jarFromEmbedded(project(it.projectPath))
jarContentsFromEmbeddedConfiguration(project(it.projectPath))
}
}