| import org.jetbrains.kotlin.gradle.tasks.KotlinCompile |
| |
| ext.manifestAttributes = { Manifest manifest, Project project, String component = null, boolean multiRelease = false -> |
| project.configure(manifest) { |
| attributes \ |
| 'Implementation-Vendor': 'JetBrains', |
| 'Implementation-Title': project.archivesBaseName, |
| 'Implementation-Version': project.buildNumber |
| |
| if (component != null) { |
| attributes \ |
| 'Kotlin-Runtime-Component': component, |
| 'Kotlin-Version': project.kotlinLanguageVersion |
| } |
| if (multiRelease) { |
| attributes \ |
| 'Multi-Release': 'true' |
| } |
| } |
| } |
| |
| task preparePublication { |
| def properties = project.properties |
| assert project.version != 'unspecified' |
| |
| Map<String, String> repositoryProviders = ['sonatype-nexus-staging' : 'sonatype', 'sonatype-nexus-snapshots' : 'sonatype'] |
| project.ext.isRelease = !project.version.toString().contains('-SNAPSHOT') |
| |
| String repo = properties["deployRepo"] ?: properties['deploy-repo'] |
| String repoProvider = repositoryProviders.get(repo, repo) |
| project.ext.isSonatypePublish = repoProvider == 'sonatype' |
| project.ext.isSonatypeRelease = isSonatypePublish && isRelease |
| |
| String deployRepoUrl = properties["deployRepoUrl"] ?: properties["deploy-url"] |
| String deployFolder = properties["deployRepoFolder"] != null ? "file://${rootProject.buildDir}/${properties["deployRepoFolder"]}" : null |
| String sonatypeSnapshotsUrl = (isSonatypePublish && !isRelease) ? "https://oss.sonatype.org/content/repositories/snapshots/" : null |
| String deployUrlFromParameters = deployRepoUrl ?: deployFolder ?: sonatypeSnapshotsUrl |
| |
| project.ext.isDeployStagingRepoGenerationRequired = project.ext.isSonatypeRelease && deployUrlFromParameters == null |
| |
| ext.repoUrl = deployUrlFromParameters ?: "file://${rootProject.buildDir}/repo" |
| logger.info("Deployment repository preliminary url: $repoUrl ($repoProvider)") |
| |
| ext.username = properties["deployRepoUsername"] ?: properties["kotlin.${repoProvider}.user"] |
| ext.password = properties["deployRepoPassword"] ?: properties["kotlin.${repoProvider}.password"] |
| |
| doLast { |
| println("Deployment repository url: $repoUrl") |
| } |
| } |
| |
| ext.configurePublishing = { Project project, configure = { } -> |
| ArtifactsKt.publish(project, false) { publication -> |
| configure.delegate = publication |
| configure() |
| } |
| } |
| |
| ext.configureFrontendIr = { Project project -> |
| project.tasks.withType(KotlinCompile.class) { task -> |
| task.kotlinOptions { |
| if (project.kotlinBuildProperties.useFirForLibraries) { |
| freeCompilerArgs += "-Xuse-k2" |
| allWarningsAsErrors = false |
| } |
| if (project.properties.renderDiagnosticNames) { |
| freeCompilerArgs += "-Xrender-internal-diagnostic-names" |
| } |
| } |
| } |
| } |
| |
| allprojects { project -> |
| project.ext.configureSourcesJar = { lambda = {} -> |
| ArtifactsKt.sourcesJar(project) { task -> |
| lambda.delegate = task |
| lambda() |
| } |
| } |
| |
| project.ext.configureJavadocJar = { lambda = {} -> |
| ArtifactsKt.javadocJar(project) { task -> |
| lambda.delegate = task |
| lambda() |
| } |
| } |
| |
| dependencies.ext.kotlinStdlib = { suffix -> |
| DependenciesKt.kotlinStdlib(project, suffix, null) |
| } |
| } |