Skip to content

Commit

Permalink
Merge pull request #161 from nebula-plugins/FIX-159/unspecified-versi…
Browse files Browse the repository at this point in the history
…on-on-publish

Configure publish/upload tasks once the plugins are applied
  • Loading branch information
rpalcolea committed Sep 8, 2019
2 parents a6e0e42 + 501a504 commit f46bee9
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 59 deletions.
42 changes: 20 additions & 22 deletions src/main/groovy/nebula/plugin/release/ReleasePlugin.groovy
Expand Up @@ -270,47 +270,45 @@ class ReleasePlugin implements Plugin<Project> {
}

void configureBintrayTasksIfPresent() {

if (isClassPresent('nebula.plugin.bintray.NebulaBintrayPackageTask')) {
project.plugins.withId('nebula.nebula-bintray') {
project.tasks.withType(PublishToMavenRepository) { Task task ->
logger.info('Configuring nebula bintray plugin to work with release plugin')
project.plugins.withType(JavaPlugin) {
task.dependsOn(project.tasks.build)
}
project.rootProject.tasks.postRelease.dependsOn(task)
}
} else {
logger.info('Skipping configuration of nebula bintray task since it is not present')
}

if (isClassPresent('com.jfrog.bintray.gradle.tasks.BintrayUploadTask')) {
project.plugins.withId('com.jfrog.bintray') {
project.tasks.withType(Class.forName('com.jfrog.bintray.gradle.tasks.BintrayUploadTask')) { Task task ->
logger.info('Configuring jfrog bintray plugin to work with release plugin')
project.plugins.withType(JavaPlugin) {
task.dependsOn(project.tasks.build)
}
project.rootProject.tasks.postRelease.dependsOn(task)
}
} else {
logger.info('Skipping configuration of bintray task since it is not present')
}

if (isClassPresent('org.jfrog.gradle.plugin.artifactory.task.BuildInfoBaseTask')) {
project.logger.warn 'Please upgrade com.jfrog.artifactory (org.jfrog.buildinfo:build-info-extractor-gradle:) to version 4.6.0 or above'
project.tasks.withType(Class.forName('org.jfrog.gradle.plugin.artifactory.task.BuildInfoBaseTask')) { Task task ->
project.plugins.withType(JavaPlugin) {
task.dependsOn(project.tasks.build)
project.plugins.withId('com.jfrog.artifactory') {
logger.info('Configuring jfrog artifactory plugin to work with release plugin')
if (isClassPresent('org.jfrog.gradle.plugin.artifactory.task.BuildInfoBaseTask')) {
project.logger.warn 'Please upgrade com.jfrog.artifactory (org.jfrog.buildinfo:build-info-extractor-gradle:) to version 4.6.0 or above'
project.tasks.withType(Class.forName('org.jfrog.gradle.plugin.artifactory.task.BuildInfoBaseTask')) { Task task ->
project.plugins.withType(JavaPlugin) {
task.dependsOn(project.tasks.build)
}
project.rootProject.tasks.postRelease.dependsOn(task)
}
project.rootProject.tasks.postRelease.dependsOn(task)
}
} else if(isClassPresent('org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask')) {
// JFrog remove BuildInfoBaseTask see https://www.jfrog.com/jira/browse/GAP-281
project.tasks.withType(Class.forName('org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask')) { Task task ->
project.plugins.withType(JavaPlugin) {
task.dependsOn(project.tasks.build)
} else if(isClassPresent('org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask')) {
// JFrog remove BuildInfoBaseTask see https://www.jfrog.com/jira/browse/GAP-281
project.tasks.withType(Class.forName('org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask')) { Task task ->
project.plugins.withType(JavaPlugin) {
task.dependsOn(project.tasks.build)
}
project.rootProject.tasks.postRelease.dependsOn(task)
}
project.rootProject.tasks.postRelease.dependsOn(task)
}
} else {
logger.info('Skipping configuration of artifactoryPublish task since it is not present')
}
}

Expand Down
Expand Up @@ -17,9 +17,7 @@ package nebula.plugin.release

import nebula.test.ProjectSpec
import org.ajoberstar.grgit.Grgit
import org.gradle.api.logging.Logger
import spock.lang.Unroll
import spock.util.mop.ConfineMetaClassChanges

class ReleasePluginOptionalDepsSpec extends ProjectSpec {
Grgit git
Expand All @@ -30,41 +28,6 @@ class ReleasePluginOptionalDepsSpec extends ProjectSpec {
git.tag.add(name: 'v0.0.1')
}

@ConfineMetaClassChanges(value = [ReleasePlugin])
def 'log info for missing BintrayUpload task'() {
given:
Logger myLogger = Mock()
ReleasePlugin.logger = myLogger
ReleasePlugin.metaClass.isClassPresent = { String name ->
name != 'com.jfrog.bintray.gradle.tasks.BintrayUploadTask' &&
name != 'org.jfrog.gradle.plugin.artifactory.task.BuildInfoBaseTask'
}

when:
project.plugins.apply(ReleasePlugin)

then:
1 * myLogger.info(_)
}

@ConfineMetaClassChanges(value = [ReleasePlugin])
def 'log info for missing BuildInfoBaseTask task'() {
given:
Logger myLogger = Mock()
ReleasePlugin.logger = myLogger
ReleasePlugin.metaClass.isClassPresent = { String name ->
name != 'com.jfrog.bintray.gradle.tasks.BintrayUploadTask' &&
name != 'org.jfrog.gradle.plugin.artifactory.task.BuildInfoBaseTask' &&
name != 'org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask'
}

when:
project.plugins.apply(ReleasePlugin)

then:
2 * myLogger.info(_)
}

@Unroll('verify isClassPresent determines #className #presenceString present')
def 'verify isClassPresent'() {
given:
Expand Down

0 comments on commit f46bee9

Please sign in to comment.