Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch standard way of publishing to maven + prepare to publish V0.52.4 #950

Merged
merged 7 commits into from
Jul 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README-zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.uber:okbuck:0.52.3'
classpath 'com.uber:okbuck:0.52.4'
}
}

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.uber:okbuck:0.52.3'
classpath 'com.uber:okbuck:0.52.4'
}
}

Expand Down
58 changes: 1 addition & 57 deletions buildSrc/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,10 @@ buildscript {
}
}

apply plugin: "maven-publish"
apply plugin: "com.jfrog.bintray"
apply plugin: "com.fizzed.rocker"
apply plugin: "net.ltgt.errorprone"

apply from: '../gradle/gradle-mvn-push.gradle'
apply from: "../dependencies.gradle"

repositories {
Expand Down Expand Up @@ -103,61 +102,6 @@ tasks.withType(JavaCompile) {
]
}

task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = "javadoc"
from "build/docs/javadoc"
}

task sourcesJar(type: Jar) {
from sourceSets.main.allSource
classifier = "sources"
}

def publishVersion = "0.52.3"

group = "com.uber"
version = publishVersion
def siteUrl = "https://github.com/uber/okbuck"
def gitUrl = "https://github.com/uber/okbuck.git"

publishing {
publications {
mavenJava(MavenPublication) {
from components.java

artifact sourcesJar
artifact javadocJar

artifactId "okbuck"
}
}
}

bintray {
user = project.properties.get("bintray.user")
key = project.properties.get("bintray.apikey")
publications = ["mavenJava"]
dryRun = false
publish = true
pkg {
repo = "gradle-plugins"
name = "okbuck"
userOrg = "uber"
desc = "Gradle plugin that lets developers utilize the Buck build system on a Gradle project"
websiteUrl = siteUrl
issueTrackerUrl = siteUrl + "/issues"
vcsUrl = gitUrl
licenses = ["MIT"]
labels = ["buck", "okbuck", "uber"]
publicDownloadNumbers = true
version {
name = publishVersion
released = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZZ").format(new Date())
vcsTag = publishVersion
}
}
}

tasks.withType(com.fizzed.rocker.gradle.RockerTask).each { task ->
task.doLast {
def tree = fileTree(dir: task.outputDir, include: '**/*.java')
Expand Down
16 changes: 16 additions & 0 deletions buildSrc/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
GROUP=com.uber
VERSION_NAME=0.52.4
POM_DESCRIPTION=A Gradle plugin that lets developers utilize the Buck build system on a Gradle project
POM_URL=https://github.com/uber/okbuck/
POM_SCM_URL=https://github.com/uber/okbuck/
POM_SCM_CONNECTION=scm:git:git://github.com/uber/okbuck.git
POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/uber/okbuck.git
POM_LICENCE_NAME=MIT
POM_LICENCE_URL=http://www.opensource.org/licenses/mit-license.phpandroid/master/LICENSE
POM_LICENCE_DIST=repo
POM_DEVELOPER_ID=uber
POM_DEVELOPER_NAME=Uber Technologies

POM_NAME=okbuck
POM_ARTIFACT_ID=okbuck
POM_PACKAGING=jar
225 changes: 225 additions & 0 deletions gradle/gradle-mvn-push.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
/*
* Copyright (C) Chris Banes
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

apply plugin: 'maven'
apply plugin: 'signing'

version = VERSION_NAME
group = GROUP

def isReleaseBuild() {
return VERSION_NAME.contains("SNAPSHOT") == false
}

def getReleaseRepositoryUrl() {
return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
: "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}

def getSnapshotRepositoryUrl() {
return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
: "https://oss.sonatype.org/content/repositories/snapshots/"
}

def getRepositoryUsername() {
return hasProperty('SONATYPE_NEXUS_USERNAME') ? SONATYPE_NEXUS_USERNAME : ""
}

def getRepositoryPassword() {
return hasProperty('SONATYPE_NEXUS_PASSWORD') ? SONATYPE_NEXUS_PASSWORD : ""
}

afterEvaluate { project ->
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME

repository(url: getReleaseRepositoryUrl()) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
snapshotRepository(url: getSnapshotRepositoryUrl()) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}

pom.project {
name POM_NAME
packaging POM_PACKAGING
description POM_DESCRIPTION
url POM_URL

scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}

licenses {
license {
name POM_LICENCE_NAME
url POM_LICENCE_URL
distribution POM_LICENCE_DIST
}
}

developers {
developer {
id POM_DEVELOPER_ID
name POM_DEVELOPER_NAME
}
}
}
}
}
}

signing {
required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}

if (project.getPlugins().hasPlugin('com.android.application') ||
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably dont want to publish the example projects so please make sure to mark those as not publishable. We only want to publish the plugin project

project.getPlugins().hasPlugin('com.android.library')) {
task install(type: Upload, dependsOn: assemble) {
repositories.mavenInstaller {
configuration = configurations.archives

pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME

pom.project {
name POM_NAME
packaging POM_PACKAGING
description POM_DESCRIPTION
url POM_URL

scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}

licenses {
license {
name POM_LICENCE_NAME
url POM_LICENCE_URL
distribution POM_LICENCE_DIST
}
}

developers {
developer {
id POM_DEVELOPER_ID
name POM_DEVELOPER_NAME
}
}
}
}
}

task androidJavadocs(type: Javadoc) {
if (!project.plugins.hasPlugin('kotlin-android')) {
source = android.sourceSets.main.java.srcDirs
}
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
exclude '**/internal/*'

if (JavaVersion.current().isJava8Compatible()) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}

task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
} else {
install {
repositories.mavenInstaller {
pom.groupId = GROUP
pom.artifactId = POM_ARTIFACT_ID
pom.version = VERSION_NAME

pom.project {
name POM_NAME
packaging POM_PACKAGING
description POM_DESCRIPTION
url POM_URL

scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}

licenses {
license {
name POM_LICENCE_NAME
url POM_LICENCE_URL
distribution POM_LICENCE_DIST
}
}

developers {
developer {
id POM_DEVELOPER_ID
name POM_DEVELOPER_NAME
}
}
}
}
}

task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
}

if (JavaVersion.current().isJava8Compatible()) {
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}
}

artifacts {
if (project.getPlugins().hasPlugin('com.android.application') ||
project.getPlugins().hasPlugin('com.android.library')) {
archives androidSourcesJar
archives androidJavadocsJar
} else {
archives sourcesJar
archives javadocJar
}
}
}