Skip to content

Commit

Permalink
feat: Gear up maven central publishing/farewell travis ci (#708)
Browse files Browse the repository at this point in the history
* feat: introduce gradle-maven-publish-plugin

* feat: polish some props

* fix: artifact id

* fix: version name

* refactor: format and remove unused plugin version

* fix: rever weird changes

* fix: remove travis support and move on to github aciotns

* fix: update readme to use maven central links
  • Loading branch information
hotchemi committed Feb 14, 2021
1 parent 7ef7e2a commit d7e3060
Show file tree
Hide file tree
Showing 18 changed files with 47 additions and 414 deletions.
44 changes: 0 additions & 44 deletions .travis.yml

This file was deleted.

Binary file removed .travis/deploy_key.enc
Binary file not shown.
22 changes: 6 additions & 16 deletions README.md
@@ -1,4 +1,4 @@
# PermissionsDispatcher [![Build Status](https://travis-ci.org/permissions-dispatcher/PermissionsDispatcher.svg?branch=master)](https://travis-ci.org/permissions-dispatcher/PermissionsDispatcher) [![PermissionsDispatcher](https://www.appbrain.com/stats/libraries/shield/permissions_dispatcher.svg)](https://www.appbrain.com/stats/libraries/details/permissions_dispatcher/permissionsdispatcher)
# PermissionsDispatcher ![CI for pull request](https://github.com/permissions-dispatcher/PermissionsDispatcher/workflows/CI%20for%20pull%20request/badge.svg?branch=master)

- **Fully Kotlin/Java support**
- [**Special permissions support**](https://github.com/hotchemi/PermissionsDispatcher/blob/master/doc/special_permissions.md)
Expand Down Expand Up @@ -100,12 +100,12 @@ NOTE: 4.x only supports [Jetpack](https://developer.android.com/jetpack/). If yo

To add PermissionsDispatcher to your project, include the following in your **app module** `build.gradle` file:

`${latest.version}` is [![Download](https://api.bintray.com/packages/hotchemi/org.permissionsdispatcher/permissionsdispatcher/images/download.svg) ](https://bintray.com/hotchemi/org.permissionsdispatcher/permissionsdispatcher/_latestVersion)
`${latest.version}` is [![Download]([https://maven-badges.herokuapp.com/maven-central/com.github.permissions-dispatcher/permissionsdispatcher/badge.svg)](https://search.maven.org/search?q=g:com.github.permissions-dispatcher)

```groovy
dependencies {
implementation "org.permissionsdispatcher:permissionsdispatcher:${latest.version}"
annotationProcessor "org.permissionsdispatcher:permissionsdispatcher-processor:${latest.version}"
implementation "com.github.permissions-dispatcher:permissionsdispatcher:${latest.version}"
annotationProcessor "com.github.permissions-dispatcher:permissionsdispatcher-processor:${latest.version}"
}
```

Expand All @@ -115,18 +115,8 @@ With Kotlin:
apply plugin: 'kotlin-kapt'
dependencies {
implementation "org.permissionsdispatcher:permissionsdispatcher:${latest.version}"
kapt "org.permissionsdispatcher:permissionsdispatcher-processor:${latest.version}"
}
```

Snapshots of the development version are available in [JFrog's snapshots repository](https://oss.jfrog.org/oss-snapshot-local/).
Add the repo below to download `SNAPSHOT` releases.

```groovy
repositories {
jcenter()
maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }
implementation "com.github.permissions-dispatcher:permissionsdispatcher:${latest.version}"
kapt "com.github.permissions-dispatcher:permissionsdispatcher-processor:${latest.version}"
}
```

Expand Down
56 changes: 1 addition & 55 deletions annotation/build.gradle
@@ -1,56 +1,2 @@
apply plugin: 'java-library'
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.bintray'

group = GROUP_ID
version = VERSION

targetCompatibility = JavaVersion.VERSION_1_6
sourceCompatibility = JavaVersion.VERSION_1_6

task sourcesJar(type: Jar) {
from sourceSets.main.java.srcDirs
classifier = 'sources'
}

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

publishing {
publications {
MyPublication(MavenPublication) {
from components.java
artifact sourcesJar
artifact javadocJar
groupId GROUP_ID
artifactId ARTIFACT_ID_ANNOTATION
version VERSION
}
}
}

bintray {
publications = ['MyPublication']
user = bintrayUser
key = bintrayKey
dryRun = dryRun
publish = true

pkg {
repo = REPO
userOrg = USER
name = ARTIFACT_ID_ANNOTATION
vcsUrl = VCS_URL
licenses = LICENSES
version {
name = VERSION
desc = DESCRIPTION
}
}
}

// Non-Android project: Artifactory Plugin adds only 1 publication
project.ext.publicationName = "maven"
apply from: rootProject.file('gradle/gradle-artifactory-upload.gradle')
apply plugin: "com.vanniktech.maven.publish"
3 changes: 3 additions & 0 deletions annotation/gradle.properties
@@ -0,0 +1,3 @@
POM_NAME = permissionsdispatcher-annotation
POM_ARTIFACT_ID = permissionsdispatcher-annotation
POM_PACKAGING = jar
12 changes: 2 additions & 10 deletions build.gradle
Expand Up @@ -9,23 +9,15 @@ buildscript {
dependencies {
classpath "com.android.tools.build:gradle:$GRADLE_PLUGIN_VERSION"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION"
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$BINTRAY_PLUGIN_VERSION"
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:$JFROG_PLUGIN_VERSION"
classpath "org.jetbrains.dokka:dokka-gradle-plugin:$DOKKA_VERSION"
classpath "com.vanniktech:gradle-maven-publish-plugin:$PUBLISH_PLUGIN_VERSION"
}
}

def generatePomFilesTask = tasks.create("generatePomFiles")

allprojects {
repositories {
mavenCentral()
google()
jcenter()
}

tasks.whenTaskAdded {
if (it.name.matches("generatePomFileFor([A-Z][a-zA-Z]*)Publication")) {
generatePomFilesTask.dependsOn it
}
}
}
34 changes: 17 additions & 17 deletions gradle.properties
@@ -1,26 +1,26 @@
# Upload configuration
USER = hotchemi
GROUP_ID = org.permissionsdispatcher
ARTIFACT_ID_LIBRARY = permissionsdispatcher
ARTIFACT_ID_PROCESSOR = permissionsdispatcher-processor
ARTIFACT_ID_ANNOTATION = permissionsdispatcher-annotation
ARTIFACT_ID_KTX = permissionsdispatcher-ktx
VERSION = 4.8.0
KTX_VERSION = 1.0.1
REPO = org.permissionsdispatcher
DESCRIPTION = Annotation-based library for generating runtime permissions dispatcher.
WEBSITE = https://github.com/permissions-dispatcher/PermissionsDispatcher
VCS_URL = https://github.com/permissions-dispatcher/PermissionsDispatcher.git
LICENSES = ['Apache-2.0']
GROUP = com.github.permissions-dispatcher
VERSION_NAME = 4.8.0
POM_NAME = PermissionsDispatcher
POM_DESCRIPTION = A declarative API to handle Android runtime permissions.
POM_INCEPTION_YEAR = 2015
POM_URL = https://github.com/permissions-dispatcher/PermissionsDispatcher
POM_SCM_URL = https://github.com/permissions-dispatcher/PermissionsDispatcher
POM_SCM_CONNECTION = https://github.com/permissions-dispatcher/PermissionsDispatcher.git
POM_LICENCE_NAME = The Apache Software License, Version 2.0
POM_LICENCE_URL = https://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST = repo
POM_DEVELOPER_ID = hotchemi
POM_DEVELOPER_NAME = Shintaro Katafuchi
POM_DEVELOPER_URL = https://github.com/hotchemi

# Plugin versions
GRADLE_PLUGIN_VERSION = 3.3.2
DOKKA_VERSION = 1.4.20
PUBLISH_PLUGIN_VERSION = 0.13.0
GRADLE_PLUGIN_VERSION = 4.0.0
KOTLIN_VERSION = 1.3.50
KOTLIN_COMPILER_LIB_VERSION = 1.3.50
KOTLIN_METADATA_VERSION = 0.0.5
CONFIG_PLUGIN_VERSION = 2.2.2
JFROG_PLUGIN_VERSION = 4.1.1
BINTRAY_PLUGIN_VERSION = 1.8.4
ANDROIDX_LIBRARY_VERSION= 1.0.0
LIFECYCLE_VERSION = 2.2.0
ARC_TESTING_VERSION = 1.1.1
Expand Down
22 changes: 0 additions & 22 deletions gradle/gradle-artifactory-upload.gradle

This file was deleted.

2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
4 changes: 2 additions & 2 deletions ktx/README.md
Expand Up @@ -119,10 +119,10 @@ fun FragmentActivity/*(or Fragment)*/.constructSystemAlertWindowPermissionReques

## Installation

`${latest.version}` is [![Download](https://api.bintray.com/packages/hotchemi/org.permissionsdispatcher/permissionsdispatcher-ktx/images/download.svg) ](https://bintray.com/hotchemi/org.permissionsdispatcher/permissionsdispatcher-ktx/_latestVersion)
`${latest.version}` is [![Download](https://maven-badges.herokuapp.com/maven-central/com.github.permissions-dispatcher/permissionsdispatcher-ktx/badge.svg)](https://search.maven.org/search?q=a:permissionsdispatcher-ktx)

```groovy
dependencies {
implementation "org.permissionsdispatcher:permissionsdispatcher-ktx:${latest.version}"
implementation "com.github.permissions-dispatcher:permissionsdispatcher-ktx:${latest.version}"
}
```
83 changes: 2 additions & 81 deletions ktx/build.gradle
@@ -1,7 +1,7 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.bintray'
apply plugin: 'org.jetbrains.dokka'
apply plugin: "com.vanniktech.maven.publish"

android {
compileSdkVersion COMPILE_SDK_VERSION
Expand Down Expand Up @@ -31,82 +31,3 @@ dependencies {
testImplementation "android.arch.core:core-testing:$ARC_TESTING_VERSION"
testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:$MOCKITO_KOTLIN_VERSION"
}

bintray {
publications = ['MyPublication']
user = bintrayUser
key = bintrayKey
dryRun = dryRun
publish = true

pkg {
repo = REPO
userOrg = USER
name = ARTIFACT_ID_KTX
vcsUrl = VCS_URL
licenses = LICENSES
websiteUrl = WEBSITE
version {
name = KTX_VERSION
desc = DESCRIPTION
}
}
}

publishing {
publications {
MyPublication(MavenPublication) {
artifact sourcesJar
artifact javadocJar
artifact "$buildDir/outputs/aar/ktx-release.aar"
groupId GROUP_ID
artifactId ARTIFACT_ID_KTX
version KTX_VERSION

pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
// Iterate over the compile dependencies, adding a <dependency> node for each
configurations.implementation.allDependencies.each {
if (it.group != null && it.name != null && it.version != null) {
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', it.group)
// to change annotation module artifactId explicitly
// ref: https://github.com/dcendents/android-maven-gradle-plugin/issues/9#issuecomment-73550293
def artifactId = (it.group == GROUP_ID && it.name == "library") ? ARTIFACT_ID_LIBRARY : it.name
dependencyNode.appendNode('artifactId', artifactId)
dependencyNode.appendNode('version', it.version)
}
}
}
}
}
}

task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}

task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

// Avoid Kotlin docs error
tasks.withType(Javadoc) {
enabled = false
}

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

artifacts {
archives javadocJar
archives sourcesJar
}

// Android Library project: Artifactory Plugin adds 1 publication per Build Type
project.ext.publicationName = "release"
apply from: rootProject.file('gradle/gradle-artifactory-upload.gradle')
4 changes: 4 additions & 0 deletions ktx/gradle.properties
@@ -0,0 +1,4 @@
POM_NAME = permissionsdispatcher-ktx
POM_ARTIFACT_ID = permissionsdispatcher-ktx
POM_PACKAGING = aar
VERSION_NAME = 1.0.1

0 comments on commit d7e3060

Please sign in to comment.