From cd76f2d9cb761848475ad0e33a1423fb90f6b97d Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Sat, 8 May 2021 02:17:40 -0700 Subject: [PATCH] Added maven publishing info. --- build.gradle.kts | 145 ++++++++++++++++++++++++++++++++++++++++++++ pom.xml | 69 +++++++++++++++++++++ settings.gradle.kts | 2 +- 3 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 pom.xml diff --git a/build.gradle.kts b/build.gradle.kts index 7584371..81b756b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,12 +1,29 @@ +import org.jetbrains.dokka.gradle.DokkaTask +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + plugins { id("com.github.ben-manes.versions") version "0.38.0" id("io.gitlab.arturbosch.detekt") version "1.17.0-RC1" + id("org.jetbrains.dokka") version "1.4.32" + id("org.sonarqube") version "3.2.0" kotlin("jvm") version "1.5.0" application + `maven-publish` + jacoco + signing } defaultTasks(ApplicationPlugin.TASK_RUN_NAME) +description = "Retrieve cryptocurrencies current market prices." +group = "net.thauvin.erik" +version = "0.9.0-SNAPSHOT" + +val deployDir = "deploy" +val gitHub = "ethauvin/$name" +val mavenUrl = "https://github.com/$gitHub" +val publicationName = "mavenJava" + repositories { mavenCentral() maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots") } @@ -27,6 +44,134 @@ application { mainClassName = "net.thauvin.erik.crypto.CryptoPrice" } +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + withSourcesJar() +} + detekt { toolVersion = "main-SNAPSHOT" } + +sonarqube { + properties { + property("sonar.projectKey", "ethauvin_$name") + property("sonar.sourceEncoding", "UTF-8") + } +} + +val javadocJar by tasks.creating(Jar::class) { + dependsOn(tasks.dokkaJavadoc) + from(tasks.dokkaJavadoc) + archiveClassifier.set("javadoc") +} + +tasks { + withType().configureEach { + kotlinOptions.jvmTarget = "1.8" + } + + withType { + destination = file("$projectDir/pom.xml") + } + + jacoco { + toolVersion = "0.8.7" + } + + jacocoTestReport { + dependsOn(test) + reports { + xml.isEnabled = true + html.isEnabled = true + } + } + + clean { + doLast { + project.delete(fileTree(deployDir)) + } + } + + withType().configureEach { + dokkaSourceSets { + named("main") { + moduleName.set("CryptoPrice") + } + } + } + + val copyToDeploy by registering(Copy::class) { + from(configurations.runtimeClasspath) { + exclude("annotations-*.jar") + } + from(jar) + into(deployDir) + } + + + register("deploy") { + description = "Copies all needed files to the $deployDir directory." + group = PublishingPlugin.PUBLISH_TASK_GROUP + dependsOn("build", "jar") + outputs.dir(deployDir) + inputs.files(copyToDeploy) + mustRunAfter("clean") + } + + "sonarqube" { + dependsOn("jacocoTestReport") + } +} + +publishing { + publications { + create(publicationName) { + from(components["java"]) + artifact(javadocJar) + pom { + name.set(project.name) + description.set(project.description) + url.set(mavenUrl) + licenses { + license { + name.set("BSD 3-Clause") + url.set("https://opensource.org/licenses/BSD-3-Clause") + } + } + developers { + developer { + id.set("ethauvin") + name.set("Erik C. Thauvin") + email.set("erik@thauvin.net") + url.set("https://erik.thauvin.net/") + } + } + scm { + connection.set("scm:git:git://github.com/$gitHub.git") + developerConnection.set("scm:git:git@github.com:$gitHub.git") + url.set("$mavenUrl") + } + issueManagement { + system.set("GitHub") + url.set("$mavenUrl/issues") + } + } + } + } + repositories { + maven { + name = "ossrh" + url = if (project.version.toString().contains("SNAPSHOT")) + uri("https://oss.sonatype.org/content/repositories/snapshots/") else + uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/") + credentials(PasswordCredentials::class) + } + } +} + +signing { + useGpgCmd() + sign(publishing.publications[publicationName]) +} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..0f3a272 --- /dev/null +++ b/pom.xml @@ -0,0 +1,69 @@ + + + + + + + + 4.0.0 + net.thauvin.erik + cryptoprice + 0.9.0-SNAPSHOT + cryptoprice + Retrieve cryptocurrencies current market prices. + https://github.com/ethauvin/cryptoprice + + + BSD 3-Clause + https://opensource.org/licenses/BSD-3-Clause + + + + + ethauvin + Erik C. Thauvin + erik@thauvin.net + https://erik.thauvin.net/ + + + + scm:git:git://github.com/ethauvin/cryptoprice.git + scm:git:git@github.com:ethauvin/cryptoprice.git + https://github.com/ethauvin/cryptoprice + + + GitHub + https://github.com/ethauvin/cryptoprice/issues + + + + + org.jetbrains.kotlin + kotlin-bom + 1.5.0 + pom + import + + + + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + 1.5.0 + runtime + + + com.squareup.okhttp3 + okhttp + 4.9.1 + runtime + + + org.json + json + 20210307 + runtime + + + diff --git a/settings.gradle.kts b/settings.gradle.kts index f038870..1732620 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,4 +7,4 @@ * in the user manual at https://docs.gradle.org/7.0/userguide/multi_project_builds.html */ -rootProject.name = "CryptoPrice" +rootProject.name = "cryptoprice"