Skip to content

Commit

Permalink
replace custom sources jar task (#507)
Browse files Browse the repository at this point in the history
  • Loading branch information
gabrielittner committed Jan 29, 2023
1 parent 744db56 commit 4b43020
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 41 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,36 @@ class MavenPublishPluginPlatformTest {
)
}

@TestParameterInjectorTest
fun javaGradlePluginKotlinProject(@TestParameter kotlinVersion: KotlinVersion) {
val project = javaGradlePluginKotlinProjectSpec(kotlinVersion)
val result = project.run(fixtures, testProjectDir, testOptions)

assertThat(result).outcome().succeeded()
assertThat(result).artifact("jar").exists()
assertThat(result).artifact("jar").isSigned()
assertThat(result).pom().exists()
assertThat(result).pom().isSigned()
assertThat(result).pom().matchesExpectedPom(kotlinStdlibJdk(kotlinVersion))
assertThat(result).module().exists()
assertThat(result).module().isSigned()
assertThat(result).sourcesJar().exists()
assertThat(result).sourcesJar().isSigned()
assertThat(result).sourcesJar().containsAllSourceFiles()
assertThat(result).javadocJar().exists()
assertThat(result).javadocJar().isSigned()

val pluginId = "com.example.test-plugin"
val pluginMarkerSpec = project.copy(group = pluginId, artifactId = "$pluginId.gradle.plugin")
val pluginMarkerResult = result.copy(projectSpec = pluginMarkerSpec)
assertThat(pluginMarkerResult).pom().exists()
assertThat(pluginMarkerResult).pom().isSigned()
assertThat(pluginMarkerResult).pom().matchesExpectedPom(
"pom",
PomDependency("com.example", "test-artifact", "1.0.0", null)
)
}

@TestParameterInjectorTest
fun javaLibraryWithToolchainProject() {
val project = javaLibraryProjectSpec().copy(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,16 @@ fun javaGradlePluginProjectSpec() = ProjectSpec(
basePluginConfig = "configure(new GradlePlugin(new JavadocJar.Empty(), true))",
)

fun javaGradlePluginKotlinProjectSpec(version: KotlinVersion): ProjectSpec {
val plainJavaGradlePluginProject = javaGradlePluginProjectSpec()
return plainJavaGradlePluginProject.copy(
plugins = plainJavaGradlePluginProject.plugins + kotlinJvmPlugin.copy(version = version.value),
sourceFiles = plainJavaGradlePluginProject.sourceFiles + listOf(
SourceFile("main", "kotlin", "com/vanniktech/maven/publish/test/KotlinTestClass.kt"),
)
)
}

fun kotlinJvmProjectSpec(version: KotlinVersion) = ProjectSpec(
plugins = listOf(
kotlinJvmPlugin.copy(version = version.value)
Expand Down
34 changes: 28 additions & 6 deletions plugin/src/main/kotlin/com/vanniktech/maven/publish/Platform.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package com.vanniktech.maven.publish

import com.android.build.api.dsl.LibraryExtension
import com.vanniktech.maven.publish.tasks.JavadocJar.Companion.javadocJarTask
import com.vanniktech.maven.publish.tasks.SourcesJar.Companion.javaSourcesJar
import com.vanniktech.maven.publish.tasks.SourcesJar.Companion.kotlinSourcesJar
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.plugins.jvm.internal.JvmModelingServices
import org.gradle.api.provider.Provider
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.tasks.TaskProvider
import org.gradle.configurationcache.extensions.serviceOf
import org.gradle.jvm.tasks.Jar

/**
* Represents a platform that the plugin supports to publish. For example [JavaLibrary], [AndroidMultiVariantLibrary] or
Expand Down Expand Up @@ -53,7 +53,7 @@ data class JavaLibrary @JvmOverloads constructor(
override fun configure(project: Project) {
project.gradlePublishing.publications.create(PUBLICATION_NAME, MavenPublication::class.java) {
it.from(project.components.getByName("java"))
it.withSourcesJar { project.javaSourcesJar(sourcesJar) }
it.withJavaSourcesJar(sourcesJar, project)
it.withJavadocJar { project.javadocJarTask(javadocJar) }
}

Expand Down Expand Up @@ -81,7 +81,7 @@ data class GradlePlugin @JvmOverloads constructor(

override fun configure(project: Project) {
project.mavenPublicationsWithoutPluginMarker {
it.withSourcesJar { project.javaSourcesJar(sourcesJar) }
it.withJavaSourcesJar(sourcesJar, project)
it.withJavadocJar { project.javadocJarTask(javadocJar) }
}
}
Expand Down Expand Up @@ -268,7 +268,7 @@ data class KotlinJvm @JvmOverloads constructor(
// https://youtrack.jetbrains.com/issue/KT-41582
project.gradlePublishing.publications.create(PUBLICATION_NAME, MavenPublication::class.java) {
it.from(project.components.getByName("java"))
it.withSourcesJar { project.javaSourcesJar(sourcesJar) }
it.withKotlinSourcesJar(sourcesJar, project)
it.withJavadocJar { project.javadocJarTask(javadocJar) }
}

Expand Down Expand Up @@ -303,7 +303,7 @@ data class KotlinJs @JvmOverloads constructor(
project.afterEvaluate {
project.gradlePublishing.publications.create(PUBLICATION_NAME, MavenPublication::class.java) {
it.from(project.components.getByName("kotlin"))
it.withSourcesJar { project.kotlinSourcesJar(sourcesJar) }
it.withKotlinSourcesJar(sourcesJar, project)
it.withJavadocJar { project.javadocJarTask(javadocJar) }
}
}
Expand Down Expand Up @@ -418,6 +418,28 @@ private fun MavenPublication.withSourcesJar(factory: () -> TaskProvider<*>) {
artifact(task)
}

private fun MavenPublication.withKotlinSourcesJar(enabled: Boolean, project: Project) {
val task = if (enabled) {
project.tasks.named("kotlinSourcesJar")
} else {
project.emptySourcesJar()
}
artifact(task)
}

private fun MavenPublication.withJavaSourcesJar(enabled: Boolean, project: Project) {
if (enabled) {
project.extensions.getByType(JavaPluginExtension::class.java).withSourcesJar()
} else {
val task = project.emptySourcesJar()
artifact(task)
}
}

private fun Project.emptySourcesJar(): TaskProvider<*> = tasks.register("emptySourcesJar", Jar::class.java) {
it.archiveClassifier.set("sources")
}

private fun MavenPublication.withJavadocJar(factory: () -> TaskProvider<*>?) {
val task = factory()
if (task != null) {
Expand Down

This file was deleted.

0 comments on commit 4b43020

Please sign in to comment.