blob: 3f41b5e5fdcbbdfb35ab7acbe37cbfd8a98e9480 [file] [log] [blame]
import plugins.KotlinBuildPublishingPlugin
plugins {
id("java-gradle-plugin")
id("org.jetbrains.kotlin.jvm")
id("com.gradle.plugin-publish")
id("jps-compatible")
id("maven-publish")
}
repositories {
mavenLocal()
mavenCentral()
}
pill {
variant = 'FULL'
}
dependencies {
api project(':kotlin-gradle-plugin-api')
// Use this dependency instead when building apart from the other modules:
// compile "org.jetbrains.kotlin:kotlin-gradle-plugin-api:$kotlin_version"
api project(':kotlin-test:kotlin-test-junit')
compileOnly kotlinStdlib()
compileOnly project(':compiler')
compileOnly project(':compiler:plugin-api')
compileOnly project(':compiler:cli-common')
compileOnly project(':compiler:cli')
compileOnly gradleApi()
compileOnly project(':dependencies:intellij-core')
}
GradleCommonKt.configureCommonPublicationSettingsForGradle(project, false)
GradleCommonKt.configureKotlinCompileTasksGradleCompatibility(project)
GradleCommonKt.excludeGradleCommonDependencies(project, sourceSets.main)
TasksKt.optInToExperimentalCompilerApi(project)
extensions.extraProperties["kotlin.stdlib.default.dependency"] = "false"
// You should configure your own Gradle plugin publication!
//extensions.configure(GradlePluginDevelopmentExtension) {
// it.setAutomatedPublishing(false)
//}
def sourceSet = sourceSets.main
def jarTask = tasks.named(sourceSet.jarTaskName, Jar)
def shadowJarTask = EmbeddableKt.embeddableCompilerDummyForDependenciesRewriting(
project,
"${EmbeddableKt.EMBEDDABLE_COMPILER_TASK_NAME}${sourceSet.jarTaskName.capitalize()}"
) {
ArtifactsKt.setupPublicJar(
it,
jarTask.flatMap { it.archiveBaseName },
jarTask.flatMap { it.archiveClassifier }
)
ArtifactsKt.addEmbeddedRuntime(it)
it.from(sourceSet.output)
// When Gradle traverses the inputs, reject the shaded compiler JAR,
// which leads to the content of that JAR being excluded as well:
def compilerDummyJarFile = project.provider { project.configurations.getByName("compilerDummyJar").singleFile }
it.exclude { it.file == compilerDummyJarFile.get() }
}
// Removing artifact produced by Jar task
configurations[sourceSet.runtimeElementsConfigurationName].artifacts.removeAll { true }
configurations[sourceSet.apiElementsConfigurationName].artifacts.removeAll { true }
// Adding instead artifact from shadow jar task
configurations {
artifacts {
add(sourceSet.runtimeElementsConfigurationName, shadowJarTask)
add(sourceSet.apiElementsConfigurationName, shadowJarTask)
}
}
publishing {
publications {
it.withType(MavenPublication).configureEach {
if (name.endsWith("PluginMarkerMaven")) {
pom {
// https://github.com/gradle/gradle/issues/8754
// and https://github.com/gradle/gradle/issues/6155
packaging = "pom"
}
}
}
}
}
gradlePlugin {
plugins {
create("gradle-subplugin-example") {
id = "org.jetbrains.kotlin.gradle-subplugin-example"
implementationClass = "example.ExampleSubplugin"
displayName = "Kotlin Gradle subplugin example"
}
}
}
// Disable releasing for this plugin
// It is not intended to be released publicly
tasks.withType(PublishToMavenRepository)
.configureEach {
if (it.name.endsWith("PublicationTo${KotlinBuildPublishingPlugin.REPOSITORY_NAME}Repository")) {
setEnabled(false)
}
}
tasks.named("publishPlugins") {
enabled = false
}