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 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. subprojects {
  2. apply plugin: GitVersion
  3. group = 'com.dmdirc.parser'
  4. apply plugin: 'maven-publish'
  5. apply plugin: 'java'
  6. sourceSets {
  7. main.java.srcDirs = ['src']
  8. test.java.srcDirs = ['test']
  9. }
  10. publishing {
  11. publications {
  12. mavenJava(MavenPublication) {
  13. artifact jar
  14. pom.withXml {
  15. def root = asNode()
  16. root.appendNode('inceptionYear', '2006')
  17. root.appendNode('url', 'http://www.dmdirc.com/')
  18. root.appendNode('name', "${group}:${artifactId}")
  19. root.appendNode('description', project.name == 'common'
  20. ? 'Framework for building parsers for connecting to chat networks '
  21. : 'IRC library')
  22. def scm = root.appendNode('scm')
  23. scm.appendNode('url', 'https://github.com/DMDirc/parser')
  24. scm.appendNode('connection', 'scm:https://github.com/DMDirc/Parser.git')
  25. scm.appendNode('developerConnection', 'scm:ssh://git@github.com:DMDirc/Parser.git')
  26. def license = root.appendNode('licenses').appendNode('license')
  27. license.appendNode('name', 'MIT License')
  28. license.appendNode('url', 'http://www.opensource.org/licenses/mit-license.php')
  29. license.appendNode('distribution', 'repo')
  30. def issues = root.appendNode('issueManagement')
  31. issues.appendNode('system', 'GitHub Issues')
  32. issues.appendNode('url', 'https://github.com/DMDirc/Parser/issues')
  33. def developers = root.appendNode('developers')
  34. def chris = developers.appendNode('developer')
  35. chris.appendNode('name', 'Chris Smith')
  36. chris.appendNode('email', 'chris@dmdirc.com')
  37. def greg = developers.appendNode('developer')
  38. greg.appendNode('name', 'Greg Holmes')
  39. greg.appendNode('email', 'greg@dmdirc.com')
  40. def shane = developers.appendNode('developer')
  41. shane.appendNode('name', 'Shane McCormack')
  42. shane.appendNode('email', 'shane@dmdirc.com')
  43. def dependenciesNode = asNode().appendNode('dependencies')
  44. configurations.compile.allDependencies.each {
  45. def dependencyNode = dependenciesNode.appendNode('dependency')
  46. dependencyNode.appendNode('groupId', it.group)
  47. dependencyNode.appendNode('artifactId', it.name)
  48. dependencyNode.appendNode('version', it.version)
  49. }
  50. configurations.testCompile.allDependencies.each {
  51. def dependencyNode = dependenciesNode.appendNode('dependency')
  52. dependencyNode.appendNode('groupId', it.group)
  53. dependencyNode.appendNode('artifactId', it.name)
  54. dependencyNode.appendNode('version', it.version)
  55. dependencyNode.appendNode('scope', 'test')
  56. }
  57. }
  58. }
  59. }
  60. repositories {
  61. maven {
  62. name 'snapshots'
  63. url 'http://artifactory.dmdirc.com/artifactory/repo'
  64. }
  65. }
  66. }
  67. sourceCompatibility = 1.8
  68. targetCompatibility = 1.8
  69. repositories.mavenCentral()
  70. dependencies {
  71. testCompile group: 'junit', name: 'junit', version: '4.12'
  72. testCompile group: 'org.mockito', name: 'mockito-all', version: '1.10.17'
  73. }
  74. task publishSnapshot(dependsOn: 'publishMavenJavaPublicationToSnapshotsRepository') << {
  75. }
  76. task javadocJar(type: Jar) {
  77. classifier = 'javadoc'
  78. from javadoc
  79. }
  80. task sourcesJar(type: Jar) {
  81. classifier = 'sources'
  82. from sourceSets.main.allSource
  83. }
  84. artifacts {
  85. archives javadocJar, sourcesJar
  86. }
  87. }
  88. task wrapper(type: Wrapper) {
  89. gradleVersion = '2.2.1'
  90. }
  91. def find(name) {
  92. if (allprojects.find { it.name == name }) {
  93. project(name)
  94. } else if (allprojects.find { it.name == 'parser:' + name }) {
  95. project('parser:' + name)
  96. } else if (allprojects.find { it.name == 'modules:parser:' + name }) {
  97. project('modules:parser:' + name)
  98. } else {
  99. println "Couldn't find project $name"
  100. }
  101. }
  102. buildscript {
  103. repositories {
  104. mavenCentral()
  105. maven {
  106. url 'http://artifactory.dmdirc.com/artifactory/repo'
  107. }
  108. }
  109. dependencies {
  110. classpath group: 'com.github.shanemcc', name: 'jgit-describe', version: '0.5'
  111. classpath group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '2.3.1.+'
  112. }
  113. }
  114. class GitVersion implements Plugin<Project> {
  115. void apply(Project project) {
  116. def jgit = new org.mdonoughe.JGitDescribeTask()
  117. jgit.dir = getGitDirectory(project)
  118. def subdir = getRelativeSubdir(project, jgit.dir)
  119. if (!subdir.isEmpty()) {
  120. jgit.subdir = subdir
  121. }
  122. def version = jgit.description
  123. project.version = getProjectVersion(version)
  124. }
  125. File getGitDirectory(Project project) {
  126. def target = project.projectDir
  127. def gitDir = new File(target, '.git')
  128. while (!gitDir.exists() && target.parentFile != null) {
  129. target = target.parentFile
  130. gitDir = new File(target, '.git')
  131. }
  132. return gitDir
  133. }
  134. String getRelativeSubdir(Project project, File gitDir) {
  135. def parent = gitDir.parentFile.absolutePath
  136. def target = project.projectDir.absolutePath
  137. return target.substring(parent.length())
  138. }
  139. String getProjectVersion(String gitVersion) {
  140. if (gitVersion.matches('.*-[0-9]+-[0-9a-f]+$')) {
  141. return gitVersion + '-SNAPSHOT'
  142. } else {
  143. return gitVersion
  144. }
  145. }
  146. }