/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ import groovy.xml.XmlSlurper def libLicense = properties.libLicense def libLicenseUrl = properties.libLicenseUrl def libRepositoryName = properties.libRepositoryName def libProjectName = properties.libProjectName def libUrl = properties.libUrl def libVcsUrl = properties.libVcsUrl ext.configurePublish = { def theGroupId = rootProject.config.componentsGroupId def theArtifactId = project.ext.artifactId def theDescription = project.ext.description // This is a little cludgey, but it seems unlikely to cause a problem, and // we are already doing it inside taskcluster. def isMegazord = theArtifactId.endsWith("-megazord") publishing { publications { aar(MavenPublication) { // This doesn't work in m-c, but the entire "publish" flow will almost certainly need rethinking there, // so just paper over this for now. if (!gradle.root.hasProperty("mozconfig")) { project.afterEvaluate { from components.release } } if (isMegazord) { artifact file("${projectDir}/../DEPENDENCIES.md"), { extension "LICENSES.md" } } // If this goes haywire with // 'Cannot configure the 'publishing' extension after it has been accessed.', // see https://github.com/researchgate/gradle-release/issues/125 and // https://stackoverflow.com/q/28020520. pom { groupId = theGroupId artifactId = theArtifactId description = theDescription // For mavenLocal publishing workflow, increment the version number every publish. // We only do this to the .pom file and not in $MEGAZORD_VERSION, because otherwise we // would need to rebuild the megazord .so on every publish, even if nothing else had changed. version = rootProject.config.componentsVersion + (rootProject.hasProperty('local') ? '-' + rootProject.property('local') : '') packaging = "aar" license { name = libLicense url = libLicenseUrl } // Megazords include compiled code from third-party rust dependencies. // We add the license info of those dependencies to the .pom to make it // easy for consumers to incorporate into their license info page. // Not clear what to do in mozilla-central though - bug 1963617. if (isMegazord && !gradle.root.hasProperty("mozconfig")) { def depLicenses = new XmlSlurper().parse(new File("${projectDir}/dependency-licenses.xml")) depLicenses.license.each { node -> license { name = node.name.text() url = node.url.text() } } } developers { developer { name = 'Sync Team' email = 'sync-team@mozilla.com' } } scm { connection = libVcsUrl developerConnection = libVcsUrl url = libUrl } } } } } task checkMavenArtifacts publishing.publications.withType(MavenPublication).each {publication -> def checkFileSizeTask = task "checkLibSizeForMavenArtifact-${publication.artifactId}"(type: Exec) { commandLine "${rootProject.projectDir}/automation/check_artifact_size.sh", project.buildDir, publication.artifactId } checkMavenArtifacts.dependsOn(checkFileSizeTask) } }