diff --git a/build.gradle b/build.gradle index 36f5aa0ca0..195219ac71 100755 --- a/build.gradle +++ b/build.gradle @@ -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" diff --git a/settings.gradle b/settings.gradle index 2dd5baedd9..b2c97b032c 100755 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,4 @@ +include "spock-bom" include "spock-core" include "spock-specs" include "spock-spring" diff --git a/spock-bom/bom.gradle b/spock-bom/bom.gradle new file mode 100644 index 0000000000..1a5406175c --- /dev/null +++ b/spock-bom/bom.gradle @@ -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) }