You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

build.gradle 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. import org.eclipse.jgit.api.Git
  2. import org.eclipse.jgit.storage.file.FileRepositoryBuilder
  3. subprojects {
  4. def gitdir = new File(projectDir.parent, '.git')
  5. if (gitdir.isFile()) {
  6. gitdir = new File(projectDir.parent, gitdir.text.replace('gitdir: ','').trim())
  7. }
  8. def repo = new FileRepositoryBuilder().setGitDir(gitdir).build()
  9. def git = Git.wrap(repo)
  10. def objectId = git.log().addPath(projectDir.name).setMaxCount(1).call().first().id
  11. project.version = git.describe().setTarget(objectId).call() + '-SNAPSHOT'
  12. apply plugin: 'java'
  13. apply plugin: 'findbugs'
  14. apply plugin: 'pmd'
  15. configurations {
  16. bundle
  17. compile {
  18. extendsFrom bundle
  19. }
  20. }
  21. sourceSets {
  22. main {
  23. java.srcDirs = ['src']
  24. resources.srcDirs = ['res']
  25. }
  26. test {
  27. java.srcDirs = ['test']
  28. resources.srcDirs = ['test-res']
  29. }
  30. }
  31. sourceCompatibility = 1.8
  32. targetCompatibility = 1.8
  33. repositories {
  34. mavenCentral()
  35. maven {
  36. url 'http://artifactory.dmdirc.com/artifactory/repo'
  37. }
  38. }
  39. dependencies {
  40. compile group: 'com.dmdirc', name: 'client', version: '+', changing: true
  41. compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.0'
  42. compile group: 'com.squareup.dagger', name: 'dagger-compiler', version: '1.2.1'
  43. testCompile group: 'junit', name: 'junit', version: '4.12'
  44. testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.17'
  45. pmd group: 'net.sourceforge.pmd', name: 'pmd-core', version: '5.2.3'
  46. pmd group: 'net.sourceforge.pmd', name: 'pmd-java', version: '5.2.3'
  47. }
  48. task copyPluginConfig(type: Copy) {
  49. from 'plugin.config'
  50. into "$buildDir"
  51. }
  52. task updatePluginConfig(dependsOn: copyPluginConfig) << {
  53. def targetFile = new File(buildDir, 'plugin.config')
  54. targetFile << "\n\nversion:\n number=${project.version}"
  55. targetFile << "\n\nbuildenv:\n"
  56. def compileConfiguration = project.configurations.getByName("compile")
  57. def resolvedConfiguration = compileConfiguration.resolvedConfiguration
  58. def resolvedArtifacts = resolvedConfiguration.resolvedArtifacts
  59. resolvedArtifacts.each { dp ->
  60. def version = dp.moduleVersion.id
  61. targetFile << " " + version.group + " " + version.name + " " + version.version + "\n"
  62. }
  63. }
  64. pmd {
  65. ruleSets = []
  66. ruleSetFiles = files("$rootDir/etc/pmd/full.xml")
  67. toolVersion = '5.2.3'
  68. ignoreFailures = true
  69. }
  70. pmdMain.doLast {
  71. copy {
  72. from pmd.reportsDir
  73. into "../pmd/"
  74. include "*.html"
  75. rename "main.html", "${project.name}-main.html"
  76. }
  77. }
  78. tasks.withType(FindBugs) {
  79. reports {
  80. html.enabled = true
  81. xml.enabled = false
  82. }
  83. }
  84. findbugs {
  85. reportLevel = 'low'
  86. effort = 'max'
  87. ignoreFailures = true
  88. }
  89. jar {
  90. from("$buildDir/plugin.config") {
  91. into 'META-INF'
  92. }
  93. from { configurations.bundle.collect { it.isDirectory() ? it : zipTree(it) } } {
  94. exclude 'META-INF/**'
  95. }
  96. }
  97. jar.doLast {
  98. copy {
  99. from jar.archivePath
  100. into "../dist/"
  101. rename ".*", "${project.name}.jar"
  102. }
  103. copy {
  104. from jar.archivePath
  105. into "../dist-versioned/"
  106. rename ".*", "${project.name}-${project.version}.jar"
  107. }
  108. }
  109. jar.outputs.file "../dist/${project.name}.jar"
  110. jar.outputs.file "../dist-versioned/${project.name}-${project.version}.jar"
  111. jar.dependsOn updatePluginConfig
  112. }
  113. allprojects {
  114. configurations.all {
  115. resolutionStrategy.cacheDynamicVersionsFor 2, 'minutes'
  116. resolutionStrategy.cacheChangingModulesFor 2, 'minutes'
  117. }
  118. }
  119. buildscript {
  120. repositories {
  121. mavenCentral()
  122. maven {
  123. url 'http://artifactory.dmdirc.com/artifactory/repo'
  124. }
  125. }
  126. dependencies {
  127. classpath group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '3.6.1.201501031845-r'
  128. }
  129. }
  130. task wrapper(type: Wrapper) {
  131. gradleVersion = '2.2.1'
  132. }
  133. subprojects.each { evaluationDependsOn it.path }
  134. task jar(dependsOn: subprojects*.jar)
  135. task test(dependsOn: subprojects*.test)
  136. tasks.dependencies.dependsOn subprojects*.tasks.dependencies
  137. def plugin(name) {
  138. if (allprojects.find { it.name == name }) {
  139. project(name)
  140. } else if (allprojects.find { it.name == 'plugins:' + name }) {
  141. project('plugins:' + name)
  142. } else if (allprojects.find { it.name == 'modules:plugins:' + name }) {
  143. project('modules:plugins:' + name)
  144. } else {
  145. println "Couldn't find project $name"
  146. }
  147. }