diff --git a/.travis.yml b/.travis.yml index cb842aca7e1..79f2114100b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -133,24 +133,32 @@ script: - mvn --quiet --batch-mode --show-version verify -Psamples after_success: # push to maven repo - - if [ $SONATYPE_USERNAME ] && [ -z $TRAVIS_TAG ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then - if [ "$TRAVIS_BRANCH" = "master" ]; then + - if [ $SONATYPE_USERNAME ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then + if [ "$TRAVIS_BRANCH" = "master" ] && [ -z $TRAVIS_TAG ]; then + echo "Publishing from branch $TRAVIS_BRANCH"; mvn clean deploy -DskipTests=true -B -U -P release --settings CI/settings.xml; echo "Finished mvn clean deploy for $TRAVIS_BRANCH"; pushd .; cd modules/openapi-generator-gradle-plugin; - ./gradlew -Psigning.keyId="$SIGNING_KEY" -Psigning.password="$SIGNING_PASSPHRASE" -Psigning.secretKeyRingFile="${TRAVIS_BUILD_DIR}/sec.gpg" -PossrhUsername="${SONATYPE_USERNAME}" -PossrhPassword="${SONATYPE_PASSWORD}" uploadArchives --no-daemon; - echo "Finished ./gradlew uploadArchives"; + ./gradlew -Psigning.keyId="$SIGNING_KEY" -Psigning.password="$SIGNING_PASSPHRASE" -Psigning.secretKeyRingFile="${TRAVIS_BUILD_DIR}/sec.gpg" -PossrhUsername="${SONATYPE_USERNAME}" -PossrhPassword="${SONATYPE_PASSWORD}" publishPluginMavenPublicationToNexusRepository closeAndReleaseRepository --no-daemon; + echo "Finished ./gradlew publishPluginMavenPublicationToNexusRepository closeAndReleaseRepository"; popd; - elif ([[ "$TRAVIS_BRANCH" =~ ^[0-9]+\.[0-9]+\.x$ ]]) ; then + elif [ -z $TRAVIS_TAG ] && [[ "$TRAVIS_BRANCH" =~ ^[0-9]+\.[0-9]+\.x$ ]]; then + echo "Publishing from branch $TRAVIS_BRANCH"; mvn clean deploy --settings CI/settings.xml; echo "Finished mvn clean deploy for $TRAVIS_BRANCH"; pushd .; cd modules/openapi-generator-gradle-plugin; + ./gradlew -PossrhUsername="${SONATYPE_USERNAME}" -PossrhPassword="${SONATYPE_PASSWORD}" publishPluginMavenPublicationToNexusRepository closeAndReleaseRepository --no-daemon; + echo "Finished ./gradlew publishPluginMavenPublicationToNexusRepository closeAndReleaseRepository"; + popd; + fi; + if [ -n $TRAVIS_TAG ] && [[ "$TRAVIS_TAG" =~ ^[v][0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Publishing the gradle plugin to Gradle Portal on tag $TRAVIS_TAG (only)"; + pushd .; + cd modules/openapi-generator-gradle-plugin; ./gradlew -Psigning.keyId="$SIGNING_KEY" -Psigning.password="$SIGNING_PASSPHRASE" -Psigning.secretKeyRingFile="${TRAVIS_BUILD_DIR}/sec.gpg" publishPlugins -Dgradle.publish.key=$GRADLE_PUBLISH_KEY -Dgradle.publish.secret=$GRADLE_PUBLISH_SECRET --no-daemon; echo "Finished ./gradlew publishPlugins (plugin portal)"; - ./gradlew -PossrhUsername="${SONATYPE_USERNAME}" -PossrhPassword="${SONATYPE_PASSWORD}" uploadArchives --no-daemon; - echo "Finished ./gradlew uploadArchives"; popd; fi; fi; diff --git a/modules/openapi-generator-gradle-plugin/build.gradle b/modules/openapi-generator-gradle-plugin/build.gradle index 346deef7c4b..405456bfe1b 100644 --- a/modules/openapi-generator-gradle-plugin/build.gradle +++ b/modules/openapi-generator-gradle-plugin/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.2.60' + ext.kotlin_version = '1.2.61' repositories { mavenCentral() maven { @@ -11,14 +11,13 @@ buildscript { maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } - maven { - url "https://plugins.gradle.org/m2/" - } } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "gradle.plugin.org.gradle.kotlin:gradle-kotlin-dsl-plugins:1.0-rc-3" classpath "com.gradle.publish:plugin-publish-plugin:0.10.1" + classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.20.0" + classpath "de.marcphilipp.gradle:nexus-publish-plugin:0.2.0" } } @@ -35,10 +34,11 @@ ext.isReleaseVersion = !version.endsWith("SNAPSHOT") apply plugin: 'com.gradle.plugin-publish' apply plugin: 'java-gradle-plugin' -apply plugin: 'maven' apply plugin: 'signing' apply plugin: 'kotlin' apply plugin: "org.gradle.kotlin.kotlin-dsl" +apply plugin: 'io.codearte.nexus-staging' +apply plugin: "de.marcphilipp.nexus-publish" sourceCompatibility = 1.8 targetCompatibility = 1.8 @@ -87,6 +87,65 @@ test { } } +task javadocJar(type: Jar) { + from javadoc + classifier = 'javadoc' +} + +task sourcesJar(type: Jar) { + from sourceSets.main.allSource + classifier = 'sources' +} + +publishing { + publications { + mavenJava(MavenPublication) { + from components.java + artifact sourcesJar + artifact javadocJar + pom { + name = 'OpenAPI-Generator Contributors' + description = project.description + url = 'https://openapi-generator.tech' + organization { + name = 'org.openapitools' + url = 'https://github.com/OpenAPITools' + } + licenses { + license { + name = "The Apache Software License, Version 2.0" + url = "http://www.apache.org/licenses/LICENSE-2.0.txt" + distribution = "repo" + } + } + developers { + developer { + id = "openapitools" + name = "OpenAPI-Generator Contributors" + email = "team@openapitools.org" + } + } + scm { + url = 'https://github.com/OpenAPITools/openapi-generator' + connection = 'scm:git:git://github.com/OpenAPITools/openapi-generator.git' + developerConnection = 'scm:git:ssh://git@github.com:OpenAPITools/openapi-generator.git' + } + issueManagement { + system = 'GitHub' + url = 'https://github.com/OpenAPITools/openapi-generator/issues' + } + } + } + } +} + +nexusPublishing { + username = ossrhUsername + password = ossrhPassword + stagingProfileId = "org.openapitools" + packageGroup = "org.openapitools" +} + gradlePlugin { plugins { openApiGenerator { @@ -109,6 +168,7 @@ pluginBundle { displayName = 'OpenAPI Generator Gradle Plugin' tags = ['openapi-3.0', 'openapi-2.0', 'openapi', 'swagger', 'codegen', 'sdk'] version = "$openApiGeneratorVersion" + group = "org.openapitools" } } } @@ -119,79 +179,8 @@ pluginBundle { // or stored as key=value pairs in ~/.gradle/gradle.properties // You can also apply them in CI via environment variables. See Gradle's docs for details. signing { - required { isReleaseVersion && gradle.taskGraph.hasTask("uploadArchives") } - sign configurations.archives -} - -task javadocJar(type: Jar) { - classifier = 'javadoc' - from javadoc -} - -task sourcesJar(type: Jar) { - from sourceSets.main.allSource - classifier = 'sources' -} - -artifacts { - archives javadocJar, sourcesJar -} - -def pomConfig = { - description project.description - name 'OpenAPI-Generator Contributors' - url 'https://openapi-generator.tech' - organization { - name 'org.openapitools' - url 'https://github.com/OpenAPITools' - } - licenses { - license { - name "The Apache Software License, Version 2.0" - url "http://www.apache.org/licenses/LICENSE-2.0.txt" - distribution "repo" - } - } - developers { - developer { - id "openapitools" - name "OpenAPI-Generator Contributors" - email "team@openapitools.org" - } - } - scm { - url 'https://github.com/OpenAPITools/openapi-generator' - connection 'scm:git:git://github.com/OpenAPITools/openapi-generator.git' - developerConnection 'scm:git:ssh://git@github.com:OpenAPITools/openapi-generator.git' - } - issueManagement { - system 'GitHub' - url 'https://github.com/OpenAPITools/openapi-generator/issues' - } -} - -uploadArchives { - repositories { - - // credentials here would need to be passed along with the gradle command: - // ./gradlew -P ossrhUsername=yourUser - // or stored in ~/.gradle/gradle.properties as key=value pairs - mavenDeployer { - beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } - repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { - authentication(userName: ossrhUsername, password: ossrhPassword) - } - - pom.withXml { - def root = asNode() - root.appendNode('description', project.description) - root.children().last() + pomConfig - } - } - } + required { isReleaseVersion && (gradle.taskGraph.hasTask("publishPluginMavenPublicationToNexusRepository") ) } + sign publishing.publications.mavenJava } compileKotlin { @@ -205,4 +194,19 @@ compileTestKotlin { } } -uploadArchives.dependsOn 'check' +javadoc { + if(JavaVersion.current().isJava9Compatible()) { + options.addBooleanOption('html5', true) + } +} + +tasks { + closeRepository { + onlyIf { nexusPublishing.useStaging.get() } + } + releaseRepository{ + onlyIf { nexusPublishing.useStaging.get() } + } +} + +publishToNexus.dependsOn 'check' diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml index 1e334058eea..f71f96b6e23 100644 --- a/modules/openapi-generator-gradle-plugin/pom.xml +++ b/modules/openapi-generator-gradle-plugin/pom.xml @@ -72,7 +72,7 @@ clean assemble - install + publishToMavenLocal diff --git a/modules/openapi-generator-gradle-plugin/settings.gradle b/modules/openapi-generator-gradle-plugin/settings.gradle index 563879e5d5d..dfb2ecf250c 100644 --- a/modules/openapi-generator-gradle-plugin/settings.gradle +++ b/modules/openapi-generator-gradle-plugin/settings.gradle @@ -1,2 +1,3 @@ rootProject.name = 'openapi-generator-gradle-plugin' +enableFeaturePreview('STABLE_PUBLISHING')