build.gradle 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. buildscript {
  2. repositories {
  3. mavenLocal()
  4. mavenCentral()
  5. maven { url 'http://mvn.revoltsoft.ru/' }
  6. maven { url 'https://plugins.gradle.org/m2/' }
  7. }
  8. dependencies {
  9. classpath 'gradle.plugin.com.dorongold.plugins:task-tree:1.5'
  10. }
  11. }
  12. repositories {
  13. mavenLocal()
  14. mavenCentral()
  15. maven { url 'http://mvn.revoltsoft.ru/' }
  16. }
  17. group = 'pro.doczilla'
  18. version = '1.0'
  19. buildDir = "${projectDir}/target"
  20. def srcDir = "src"
  21. ext.srcMainDir = "${srcDir}"
  22. ext.resolveGroups = ['pro.doczilla']
  23. def windows = org.apache.tools.ant.taskdefs.condition.Os.isFamily(org.apache.tools.ant.taskdefs.condition.Os.FAMILY_WINDOWS)
  24. ext.npmCmd = windows ? 'npm.cmd' : 'npm'
  25. ext.nodeCmd = windows ? 'node.exe' : 'node'
  26. def gitDefaults = [
  27. adminPassword: '',
  28. commentsRepoUrl: '',
  29. gitUsername: '',
  30. gitEmail: '',
  31. gitPassword: ''
  32. ].each {
  33. if (!project.hasProperty(it.key))
  34. ext[it.key] = it.value
  35. }
  36. apply plugin: 'eclipse'
  37. apply plugin: 'maven-publish'
  38. apply plugin: 'distribution'
  39. apply plugin: 'com.dorongold.task-tree'
  40. task copySources {
  41. copy {
  42. from file("${projectDir}/package.json")
  43. into file(buildDir)
  44. }
  45. copy {
  46. from file("${projectDir}/tsconfig.json")
  47. into file(buildDir)
  48. }
  49. copy {
  50. from file("${projectDir}/config.json")
  51. into file(buildDir)
  52. expand(adminPassword: adminPassword)
  53. }
  54. copy {
  55. from file(projectDir)
  56. include "*.tmpl"
  57. into file(buildDir)
  58. rename { fileName -> fileName.replace('.tmpl', '') }
  59. expand(commentsRepoUrl: commentsRepoUrl, gitUsername: gitUsername, gitEmail: gitEmail, gitPassword: gitPassword)
  60. }
  61. copy {
  62. from file("${projectDir}/src")
  63. into file("${buildDir}/src")
  64. }
  65. copy {
  66. from file("${projectDir}/node_scripts")
  67. into file("${buildDir}/node_scripts")
  68. }
  69. copy {
  70. from file("${projectDir}/static")
  71. into file("${buildDir}/static")
  72. }
  73. }
  74. task npmInstall(type: Exec) {
  75. dependsOn copySources
  76. workingDir buildDir
  77. commandLine npmCmd, 'install'
  78. }
  79. task buildTs(type: Exec) {
  80. dependsOn npmInstall
  81. workingDir buildDir
  82. executable npmCmd
  83. args = ['run', 'buildProd']
  84. }
  85. task run(type: Exec) {
  86. dependsOn assemble
  87. workingDir "${buildDir}/build"
  88. commandLine nodeCmd, 'index.js'
  89. }
  90. static def today() {
  91. return new Date().format('yyyyMMddHHmm')
  92. }
  93. distZip {
  94. archiveClassifier = today()
  95. }
  96. project.tasks.assemble.dependsOn project.tasks.buildTs
  97. project.tasks.distZip.dependsOn project.tasks.buildTs
  98. project.tasks.distTar.dependsOn project.tasks.buildTs
  99. project.tasks.installDist.dependsOn project.tasks.buildTs
  100. distributions {
  101. main {
  102. contents {
  103. from(buildDir) {
  104. include 'node_modules/**'
  105. }
  106. from("${buildDir}/build")
  107. }
  108. }
  109. }
  110. apply from: 'docker.gradle'