build.gradle 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. apply plugin: 'base'
  2. buildscript {
  3. repositories {
  4. mavenRepo urls: 'http://gradle.artifactoryonline.com/gradle/plugins'
  5. }
  6. dependencies {
  7. classpath "org.gradle.plugins:gradle-idea-plugin:0.3"
  8. }
  9. }
  10. allprojects {
  11. version = '3.1.0.CI-SNAPSHOT'
  12. releaseBuild = version.endsWith('RELEASE')
  13. snapshotBuild = version.endsWith('SNAPSHOT')
  14. group = 'org.springframework.security'
  15. repositories {
  16. mavenRepo name:'Local', urls: "file://" + System.properties['user.home'] + "/.m2/repository"
  17. mavenCentral()
  18. mavenRepo name: 'SpringSource Milestone Repo', urls: 'http://repository.springsource.com/maven/bundles/milestone'
  19. mavenRepo name: 'SpringSource Maven Snapshot Repo', urls: 'http://maven.springframework.org/snapshot/'
  20. mavenRepo name: 'SpringSource Enterprise Release', urls: 'http://repository.springsource.com/maven/bundles/release'
  21. mavenRepo name: 'SpringSource Enterprise External', urls: 'http://repository.springsource.com/maven/bundles/external'
  22. mavenRepo(name: 'Spock Snapshots', urls: 'http://m2repo.spockframework.org/snapshots')
  23. }
  24. }
  25. allprojects {
  26. apply plugin: 'idea'
  27. ideaModule {
  28. downloadJavadoc=false
  29. excludeDirs.add(buildDir)
  30. }
  31. def config = configurations.findByName('testRuntime')
  32. if (!config) {
  33. return
  34. }
  35. ideaModule {
  36. gradleCacheVariable = 'GRADLE_CACHE'
  37. }
  38. }
  39. ideaModule {
  40. excludeDirs.add(file('.gradle'))
  41. excludeDirs.add(file('buildSrc/build'))
  42. excludeDirs.add(file('buildSrc/.gradle'))
  43. }
  44. ideaProject {
  45. wildcards += ['?*.gradle']
  46. javaVersion = '1.6'
  47. withXml { node ->
  48. node.component.find { it.@name == 'VcsDirectoryMappings' }.mapping.@vcs = 'Git'
  49. }
  50. }
  51. /*
  52. ideaWorkspace {
  53. withXml { node ->
  54. Node servers = node.component.find{ it.@name == 'TaskManager' }.servers[0]
  55. def bldr = new NodeBuilder()
  56. servers.append(
  57. bldr.JIRA(shared: false, url: 'https://jira.springsource.org') {
  58. if (project.hasProperty('jiraUser')) {
  59. password project.property('jiraPassword')
  60. username project.property('jiraUser')
  61. }
  62. })
  63. }
  64. }
  65. */
  66. configure(javaProjects) {
  67. apply from: "$rootDir/gradle/javaprojects.gradle"
  68. }
  69. configure(coreModuleProjects) {
  70. apply from: "$rootDir/gradle/bundlor.gradle"
  71. apply from: "$rootDir/gradle/maven.gradle"
  72. // Gives better names in structure101 jar diagram
  73. sourceSets.main.classesDir = new File(buildDir, "classes/" + project.name.substring("spring-security".length() + 1))
  74. }
  75. configure (aspectjProjects) {
  76. apply from: "$rootDir/gradle/aspectj.gradle"
  77. }
  78. configurations {
  79. antlibs
  80. }
  81. dependencies {
  82. antlibs "org.springframework.build:org.springframework.build.aws.ant:3.0.3.RELEASE",
  83. "net.java.dev.jets3t:jets3t:0.6.1"
  84. }
  85. task apidocs(type: Javadoc) {
  86. destinationDir = new File(buildDir, 'apidocs')
  87. title = "Spring Security $version API"
  88. optionsFile = file("$buildDir/tmp/javadoc.options")
  89. source coreModuleProjects.collect {project ->
  90. project.sourceSets.main.allJava
  91. }
  92. classpath = files(coreModuleProjects.collect {project ->
  93. project.sourceSets.main.compileClasspath
  94. })
  95. }
  96. task docSiteLogin(type: Login) {
  97. if (project.hasProperty('sshHost')) {
  98. host = project.property('sshHost')
  99. }
  100. }
  101. // Define remoteSiteDir and sshHost in gradle.properties
  102. def remoteDocsDir = null
  103. if (hasProperty('remoteSiteDir')) {
  104. remoteDocsDir="$remoteSiteDir/docs/3.1.x"
  105. }
  106. task uploadApidocs(type: TarUpload) {
  107. dependsOn apidocs
  108. classifier = 'apidocs'
  109. remoteDir = remoteDocsDir
  110. login = docSiteLogin
  111. into('apidocs') {
  112. from apidocs.destinationDir
  113. }
  114. }
  115. def docsDir = new File(project(':manual').buildDir, 'docs')
  116. task uploadDoc(type: TarUpload) {
  117. dependsOn ':manual:doc'
  118. classifier = 'doc'
  119. remoteDir = remoteDocsDir
  120. login = docSiteLogin
  121. into('reference') {
  122. from docsDir
  123. }
  124. }
  125. task uploadFaq(type: TarUpload) {
  126. dependsOn ':faq:docbookHtmlSingle'
  127. classifier = 'faq'
  128. if (project.hasProperty('remoteSiteDir')) {
  129. remoteDir = project.property('remoteSiteDir')
  130. }
  131. login = docSiteLogin
  132. def faqDir = new File(project(':faq').buildDir, 'docs')
  133. into('faq') {
  134. from faqDir
  135. }
  136. }
  137. task dist(type: Zip) {
  138. def zipRootDir = "${project.name}-$version"
  139. into(zipRootDir) {
  140. into('docs/apidocs') {
  141. from apidocs.destinationDir
  142. }
  143. into('docs/reference') {
  144. from docsDir
  145. }
  146. into('dist') {
  147. from coreModuleProjects.collect {project -> project.libsDir }
  148. from project(':spring-security-samples-tutorial').libsDir
  149. from project(':spring-security-samples-contacts').libsDir
  150. }
  151. }
  152. }
  153. dist {
  154. dependsOn apidocs, ':manual:doc', subprojects.collect { "$it.path:assemble" }
  155. doLast {
  156. ant.checksum(file: archivePath, algorithm: 'SHA1', fileext: '.sha1')
  157. }
  158. }
  159. task uploadDist(type: UploadDist) {
  160. archiveFile = dist.archivePath
  161. shaFile = "${dist.archivePath}.sha1" as File
  162. archiveName = dist.archiveName
  163. classpath = configurations.antlibs
  164. }
  165. def getJavaProjects() {
  166. subprojects.findAll {project -> project.name != 'faq' && project.name != 'manual' }
  167. }
  168. def getSampleProjects() {
  169. subprojects.findAll {project -> project.name.startsWith('spring-security-samples') }
  170. }
  171. def getItestProjects() {
  172. subprojects.findAll {project -> project.name.startsWith('itest') }
  173. }
  174. def getCoreModuleProjects() {
  175. javaProjects - sampleProjects - itestProjects
  176. }
  177. def getAspectjProjects() {
  178. [project(':spring-security-aspects'), project(':spring-security-samples-aspectj')]
  179. }
  180. def getReleaseProjects() {
  181. coreModuleProjects +project(':spring-security-aspects')
  182. }
  183. class UploadDist extends DefaultTask {
  184. @InputFile
  185. File shaFile
  186. @InputFile
  187. File archiveFile
  188. @Input
  189. String archiveName
  190. @InputFiles
  191. def classpath
  192. @TaskAction
  193. def upload() {
  194. def accessKey = project.s3AccessKey
  195. def secretKey = project.s3SecretAccessKey
  196. def version = project.version
  197. project.ant {
  198. taskdef(resource: 'org/springframework/build/aws/ant/antlib.xml', classpath: classpath.asPath)
  199. s3(accessKey: accessKey, secretKey: secretKey) {
  200. upload(bucketName: 'dist.springframework.org', file: archiveFile,
  201. toFile: releaseType() + "/SEC/${archiveName}", publicRead: 'true') {
  202. metadata(name: 'project.name', value: 'Spring Security')
  203. metadata(name: 'release.type', value: releaseType())
  204. metadata(name: 'bundle.version', value: version)
  205. metadata(name: 'package.file.name', value: archiveName)
  206. }
  207. upload(bucketName: 'dist.springframework.org', file: shaFile,
  208. toFile: releaseType() + "/SEC/${archiveName}.sha1", publicRead: 'true')
  209. }
  210. }
  211. }
  212. def releaseType() {
  213. if (project.releaseBuild) {
  214. 'release'
  215. } else if (project.snapshotBuild) {
  216. 'snapshot'
  217. } else {
  218. 'milestone'
  219. }
  220. }
  221. }