Skip to content

Commit

Permalink
Add spock-bom project
Browse files Browse the repository at this point in the history
The spock-bom project generates a Maven compatible bill of materials
pom.xml which manages all spock artifacts.
  • Loading branch information
leonard84 committed Aug 16, 2016
1 parent 82b03ce commit 9cf1cc9
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 1 deletion.
3 changes: 2 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -104,11 +104,12 @@ subprojects {
}

signing {
required { gradle.taskGraph.hasTask('uploadArchives') }
sign configurations.archives
}

signArchives {
onlyIf { gradle.taskGraph.hasTask(uploadArchives) }
onlyIf { gradle.taskGraph.hasTask('uploadArchives') }
}

ext."signing.keyId" = "2EA0A67F"
Expand Down
1 change: 1 addition & 0 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
include "spock-bom"
include "spock-core"
include "spock-specs"
include "spock-spring"
Expand Down
76 changes: 76 additions & 0 deletions spock-bom/bom.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
plugins {
id 'maven'
}

def modifyBom = { xml ->
def projectNode = xml.asNode()

projectNode.remove(projectNode['dependencies'][0]) // remove default dependency section

projectNode['version'] + { // add packaging next to version
packaging 'pom'
}

projectNode.appendNode('properties').appendNode('spock.version', project.fullVersion)

def dependencyManagement = projectNode.appendNode('dependencyManagement').appendNode('dependencies')

def mvnProjects = project.parent.subprojects.findAll { it.hasProperty('install') } // find all published projects
mvnProjects -= project // don't self reference

mvnProjects.name.each {
dependencyManagement.appendNode('dependency').with { dep ->
dep.appendNode('groupId', project.group)
dep.appendNode('artifactId', it)
dep.appendNode('version', '${spock.version}')
}
}
}

displayName = "Spock Framework - Bill of Materials"

description = '''This bill of materials provides managed spock dependencies.'''

def bom = {
project {
name project.displayName
description project.description
url "http://spockframework.org"

licenses {
license {
name "The Apache Software License, Version 2.0"
url "http://www.apache.org/licenses/LICENSE-2.0.txt"
distribution "repo"
}
}
}
}
task writeBom << {
pom(bom).withXml(modifyBom) .writeTo("$buildDir/pom.xml")
}

def deployers = []

project.afterEvaluate {
configure(deployers) {
pom(bom).withXml(modifyBom)
}
}

install {
deployers << repositories.mavenInstaller
}

uploadArchives {
deployers << repositories.mavenDeployer {
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: "pniederw", password: System.getenv("SONATYPE_OSS_PASSWORD"))
}
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: "pniederw", password: System.getenv("SONATYPE_OSS_PASSWORD"))
}
}
}

deployers*.beforeDeployment { signing.signPom(it) }

0 comments on commit 9cf1cc9

Please sign in to comment.