From ee4bd7185532f2e8bb468a684158766b9aa44da7 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Mon, 29 Sep 2014 20:56:54 -0500 Subject: [PATCH] Cleanup Maven Publishing * Ensure that Maven Source Jars are published * Ensure that Javadoc is published * Ensure Maven pom includes required information for central Fixes gh-36 --- build.gradle | 1 + gradle/publish-maven.gradle | 51 +++++++++++++++++++++++++++++++++++++ spring-session/build.gradle | 34 ++++++++++++++++++++++++- 3 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 gradle/publish-maven.gradle diff --git a/build.gradle b/build.gradle index a8e37e81..fb4a597f 100644 --- a/build.gradle +++ b/build.gradle @@ -15,6 +15,7 @@ buildscript { group = 'org.springframework.session' ext.JAVA_GRADLE = "$rootDir/gradle/java.gradle" +ext.MAVEN_GRADLE = "$rootDir/gradle/publish-maven.gradle" ext.TOMCAT_GRADLE = "$rootDir/gradle/tomcat.gradle" apply plugin: 'sonar-runner' diff --git a/gradle/publish-maven.gradle b/gradle/publish-maven.gradle new file mode 100644 index 00000000..e5788a12 --- /dev/null +++ b/gradle/publish-maven.gradle @@ -0,0 +1,51 @@ +apply plugin: 'propdeps-maven' + +install { + repositories.mavenInstaller { + customizePom(pom, project) + } +} + +def customizePom(pom, gradleProject) { + pom.whenConfigured { generatedPom -> + + // sort to make pom dependencies order consistent to ease comparison of older poms + generatedPom.dependencies = generatedPom.dependencies.sort { dep -> + "$dep.scope:$dep.groupId:$dep.artifactId" + } + + // add all items necessary for maven central publication + generatedPom.project { + name = gradleProject.description + description = gradleProject.description + url = "https://github.com/spring-projects/spring-session" + organization { + name = "Spring IO" + url = "http://projects.spring.io/spring-session" + } + licenses { + license { + name "The Apache Software License, Version 2.0" + url "http://www.apache.org/licenses/LICENSE-2.0.txt" + distribution "repo" + } + } + scm { + url = "https://github.com/spring-projects/spring-session" + connection = "scm:git:git://github.com/spring-projects/spring-session" + developerConnection = "scm:git:git://github.com/spring-projects/spring-session" + } + developers { + developer { + id = "rwinch" + name = "Rob Winch" + email = "rwinch@pivotal.io" + } + } + issueManagement { + system = "GitHub" + url = "https://github.com/spring-projects/spring-session/issues" + } + } + } +} \ No newline at end of file diff --git a/spring-session/build.gradle b/spring-session/build.gradle index 6fa2a277..664098be 100644 --- a/spring-session/build.gradle +++ b/spring-session/build.gradle @@ -1,5 +1,5 @@ apply from: JAVA_GRADLE -apply plugin: 'propdeps-maven' +apply from: MAVEN_GRADLE project.conf2ScopeMappings.addMapping(MavenPlugin.TEST_COMPILE_PRIORITY + 1, project.configurations.getByName("integrationTestCompile"), Conf2ScopeMappingContainer.TEST) project.conf2ScopeMappings.addMapping(MavenPlugin.TEST_COMPILE_PRIORITY + 2, project.configurations.getByName("integrationTestRuntime"), Conf2ScopeMappingContainer.TEST) @@ -23,6 +23,38 @@ dependencies { jacoco "org.jacoco:org.jacoco.agent:0.6.2.201302030002:runtime" } + +javadoc { + description = "Generates project-level javadoc for use in -javadoc jar" + + options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED + options.author = true + options.header = project.name + options.links(project.ext.javadocLinks) + options.addStringOption('Xdoclint:none', '-quiet') + + // suppress warnings due to cross-module @see and @link references; + // note that global 'api' task does display all warnings. + logging.captureStandardError LogLevel.INFO + logging.captureStandardOutput LogLevel.INFO // suppress "## warnings" message +} + +task sourcesJar(type: Jar, dependsOn: classes) { + classifier = 'sources' + from sourceSets.main.allSource + // don't include or exclude anything explicitly by default. See SPR-12085. +} + +task javadocJar(type: Jar) { + classifier = "javadoc" + from javadoc +} + +artifacts { + archives sourcesJar + archives javadocJar +} + test { jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=${project.group}.*" }