Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.57 KB | None | 0 0
  1. import groovy.json.JsonSlurper
  2. import thermos.CreateChangelog
  3. import thermos.InstallBundle
  4. import thermos.VersionParser
  5.  
  6. buildscript {
  7.     repositories {
  8.         maven {
  9.             name 'prok'
  10.             url 'https://djoveryde.000webhostapp.com/kcauldron/files/'
  11.         }
  12.         maven {
  13.             name 'forge'
  14.             url 'http://files.minecraftforge.net/maven/'
  15.         }
  16.         maven {
  17.             name 'sonatype'
  18.             url 'http://oss.sonatype.org/content/repositories/snapshots/'
  19.         }
  20.         maven {
  21.             name 'spigot'
  22.             url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
  23.         }
  24.         flatDir {
  25.             dirs 'libs'
  26.         }
  27.         mavenCentral()
  28.         mavenLocal()
  29.     }
  30.     dependencies {
  31.         classpath files('FGS.jar')
  32.         classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
  33.     }
  34. }
  35.  
  36. tasks.whenTaskAdded {
  37.     if (it.name.startsWith('publish')) it.dependsOn 'preparePublication'
  38. }
  39.  
  40. task wrapper(type: Wrapper) {
  41.     gradleVersion = '2.8'
  42. }
  43.  
  44. apply plugin: 'maven'
  45. apply plugin: 'cauldron'
  46. apply plugin: 'maven-publish'
  47. apply plugin: 'signing'
  48.  
  49. repositories {
  50.     clear()
  51.     maven {
  52.         name 'sonatype'
  53.         url 'http://oss.sonatype.org/content/repositories/snapshots/'
  54.     }
  55.     maven {
  56.         name 'prok'
  57.         url 'https://djoveryde.000webhostapp.com/kcauldron/files/'
  58.     }
  59.     maven {
  60.         name 'forge'
  61.         url 'http://files.minecraftforge.net/maven/'
  62.     }
  63.     maven {
  64.         name 'minecraft'
  65.         url 'https://libraries.minecraft.net/'
  66.     }
  67.     maven {
  68.         name 'spigot'
  69.         url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
  70.     }
  71.  
  72.     flatDir {
  73.         dirs 'libs'
  74.     }
  75.  
  76.     mavenCentral()
  77.     mavenLocal()
  78. }
  79.  
  80.  minecraft {
  81.      version = '1.11.2'
  82.      mcpVersion = '9.37'
  83.      mainClass = 'net.minecraftforge.fml.relauncher.ServerLaunchWrapper'
  84.      tweakClass = 'net.minecraftforge.fml.common.launcher.FMLTweaker'
  85.      installerVersion = "1.5"
  86.      srgExtra "PK: org/bukkit/bukkit org/bukkit/bukkit/1.11.2-R0.1-SNAPSHOT"
  87.  }
  88.  
  89. group = 'djoveryde'
  90.  
  91. ext.buildInfoCached = null;
  92.  
  93. def buildInfo(String key) {
  94.     if (!buildInfoCached) {
  95.         if (project.hasProperty('officialBuild')) {
  96.             buildInfoCached = new JsonSlurper().parse(new URL("https://th.tcpr.ca/version"))
  97.         } else {
  98.             buildInfoCached = [
  99.                     nextBuildNumber: 'UNOFFICIAL',
  100.                     version        : 'NONE'
  101.             ]
  102.         }
  103.     }
  104.     return key ? buildInfoCached[key] : buildInfoCached;
  105. }
  106.  
  107. ext.gitInfoCached = null;
  108.  
  109. def gitInfo(String key) {
  110.     if (!gitInfoCached) {
  111.         if (file('.git').exists()) {
  112.             gitInfoCached = [
  113.                     hash    : ['git', 'log', "--format=%h", '-n', '1'].execute().text.trim(),
  114.                     fullHash: ['git', 'log', "--format=%H", '-n', '1'].execute().text.trim(),
  115.                     branch  : System.getenv("CI_BUILD_REF_NAME") ?: ['git', 'symbolic-ref', '--short', 'HEAD'].execute().text.trim(),
  116.                     message : ['git', 'log', "--format=%B", '-n', '1'].execute().text.trim()
  117.             ]
  118.         } else {
  119.             gitInfoCached = [
  120.                     hash    : 'NOT_A_GIT',
  121.                     fullHash: 'NOT_A_GIT',
  122.                     branch  : 'NOT_A_GIT',
  123.                     message : 'NOT_A_GIT'
  124.             ]
  125.         }
  126.     }
  127.     return key ? gitInfoCached[key] : gitInfoCached;
  128. }
  129.  
  130. ext.mcVersion = "1.11.2"
  131. ext.forgeVersion = VersionParser.parseForgeRevision(file('src/main/resources/fmlversion.properties'))
  132. ext.revision = project.hasProperty('revision') ? project.getProperty('revision') : buildInfo('nextBuildNumber')
  133. version = "${mcVersion}-${forgeVersion}.${revision}"
  134. if (project.hasProperty('officialBuild')) println "Updated Thermos version: ${version}"
  135.  
  136. launch4j {
  137.     jreMinVersion = '1.8.0'
  138. }
  139.  
  140. configurations {
  141.     compile.extendsFrom exported
  142.     libraries
  143.     bootstrap
  144. }
  145.  
  146. dependencies {
  147.     bootstrap 'pw.prok:KBootstrap:0.2.+'
  148.     libraries 'pw.prok:KBootstrap:0.3.2@jar'
  149.     libraries 'pw.prok:Damask:0.1.2@jar'
  150.     libraries 'commons-cli:commons-cli:1.3@jar'
  151.     libraries 'org.slf4j:slf4j-simple:1.6.2@jar'
  152.     libraries 'org.eclipse.jetty:jetty-servlet:9.0.3.v20130506@jar'
  153.     libraries 'commons-io:commons-io:2.4@jar'
  154.     libraries 'net.sf.opencsv:opencsv:2.0@jar'
  155.     libraries 'com.beust:jcommander:1.30@jar'
  156.     libraries 'net.minecraft:launchwrapper:1.12@jar'
  157.     libraries 'org.ow2.asm:asm-all:5.0.3'
  158.     libraries 'com.typesafe.akka:akka-actor_2.11:2.3.3'
  159.     libraries 'com.typesafe:config:1.2.1'
  160.     libraries 'org.scala-lang:scala-actors-migration_2.11:1.1.0'
  161.     libraries 'org.scala-lang:scala-compiler:2.11.7'
  162.     libraries 'org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2'
  163.     libraries 'org.scala-lang.plugins:scala-continuations-plugin_2.11.2:1.0.2'
  164.     libraries 'org.scala-lang:scala-library:2.11.7'
  165.     libraries 'org.scala-lang:scala-parser-combinators:2.11.0-M4'
  166.     libraries 'org.scala-lang:scala-reflect:2.11.7'
  167.     libraries 'org.scala-lang:scala-swing:2.11.0-M7'
  168.     libraries 'org.scala-lang:scala-xml:2.11.0-M4'
  169.     libraries 'net.sf.jopt-simple:jopt-simple:5.0.1'
  170.     libraries 'lzma:lzma:0.0.1'
  171.     libraries 'org.yaml:snakeyaml:1.9'
  172.     libraries 'commons-lang:commons-lang:2.6'
  173.     libraries 'org.avaje:ebean:2.7.3'
  174.     libraries 'jline:jline:2.6'
  175.     libraries 'net.md-5:SpecialSource:1.7.4'
  176.     libraries 'net.sourceforge.argo:argo:2.25'
  177.     libraries 'com.googlecode.json-simple:json-simple:1.1'
  178.     libraries 'org.xerial:sqlite-jdbc:3.7.2'
  179.     libraries 'mysql:mysql-connector-java:5.1.14'
  180.     libraries 'javax.persistence:persistence-api:1.0.2'
  181.     libraries 'net.minecraft:server:1.7.10'
  182.     libraries 'pw.prok:KImagine:0.2.0@jar'
  183.     libraries 'org.apache.httpcomponents:httpclient:4.4.1'
  184.     libraries 'net.openhft:affinity:3.0.1'
  185.     libraries 'org.fusesource.jansi:jansi:1.11'
  186.     libraries 'com.koloboke:koloboke-impl-jdk8:1.0.0'
  187.     libraries 'java3d:vecmath:1.3.1'
  188.     libraries fileTree(dir: "libs", include: "*.jar")
  189. }
  190.  
  191. packageUniversal {
  192.     from { configurations.exported.collect { it.isDirectory() ? it : zipTree(it) } }
  193. }
  194.  
  195. def String repeat(String string, int times) {
  196.     StringBuilder builder = new StringBuilder(string.length() * times)
  197.     times.times { builder.append(string) }
  198.     builder as String
  199. }
  200.  
  201. def generateClasspath(boolean legacy = false) {
  202.     def classpath = ''
  203.     configurations.libraries.resolvedConfiguration.resolvedArtifacts.collect { it.moduleVersion.id }.each {
  204.         def jar = "${it.group.replace('.', '/')}/${it.name}/${it.version}/${it.name}-${it.version}.jar"
  205.         classpath += " ${legacy ? 'libraries/' : repeat('../', (group as String).split('\\.').length + 2)}${jar}"
  206.     }
  207.     return classpath.trim()
  208. }
  209.  
  210. def generateManifest(boolean legacy = false) {
  211.     [
  212.             'Thermos-Git-Branch'    : gitInfo('branch'),
  213.             'Thermos-Git-Hash'      : gitInfo('fullHash'),
  214.             'Thermos-Group'         : project.group,
  215.             'Thermos-Channel'       : project.name,
  216.             'Thermos-Version'       : project.version,
  217.             'Thermos-Legacy'        : legacy,
  218.             'Implementation-Vendor' : 'CyberdyneCC',
  219.             'Implementation-Title'  : project.name,
  220.             'Implementation-Version': project.version,
  221.             'Specification-Vendor'  : 'Bukkit Team',
  222.             'Specification-Title'   : 'Bukkit',
  223.             'Specification-Version' : '1.11.2-R0.1-SNAPSHOT',
  224.             'Forge-Version'         : VersionParser.parseForgeVersion(file('forge/src/main/java/net/minecraftforge/common/ForgeVersion.java'), file('src/main/resources/fmlversion.properties')),
  225.             'TweakClass'            : 'cpw.mods.fml.common.launcher.FMLTweaker',
  226.             'Main-Class'            : 'cpw.mods.fml.relauncher.ServerLaunchWrapper',
  227.             'Class-Path'            : generateClasspath(legacy)
  228.     ]
  229. }
  230.  
  231. tasks.packageUniversal {
  232.     classifier = 'server'
  233.     setManifest {}
  234.     manifest.attributes(generateManifest(true))
  235. }
  236.  
  237. task jar(type: Jar, dependsOn: packageUniversal) {
  238.     destinationDir file("${buildDir}/distributions")
  239.     from zipTree(tasks.packageUniversal.archivePath)
  240.     manifest.attributes(generateManifest())
  241. }
  242.  
  243. tasks.createChangelog.onlyIf { false }
  244. tasks.packageInstaller.onlyIf { false }
  245.  
  246. task packageChangelog(type: CreateChangelog) {
  247.     onlyIf { project.hasProperty('officialBuild') }
  248.     classifier = 'changelog'
  249.     extension = 'txt'
  250.     oldChangelogUrl = "https://i.tcpr.ca/thermos/changelog.txt"
  251.     hash = gitInfo('hash')
  252.     message = gitInfo('message')
  253.     version = project.version
  254. }
  255.  
  256. task bundleStub(type: Jar) {
  257.     classifier = 'stub'
  258.     manifest.attributes([
  259.             'Main-Class': 'cpw.mods.fml.relauncher.ServerLaunchWrapper',
  260.             'Class-Path': "bin/${project.group.replace('.', '/')}/${project.name}/${project.version}/${project.name}-${project.version}.jar"
  261.     ])
  262. }
  263.  
  264. task installBundle(type: InstallBundle, dependsOn: jar) {
  265.     serverJar tasks.jar.archivePath
  266.     bootstrapClasspath configurations.bootstrap
  267.     bootstrapMain 'pw.prok.bootstrap.Main'
  268. }
  269.  
  270. task packageBundle(type: Zip, dependsOn: installBundle) {
  271.     classifier = 'bundle'
  272.     from fileTree(installBundle.installLocation)
  273.     from bundleStub
  274.     rename bundleStub.archiveName, 'Thermos.jar'
  275. }
  276.  
  277. task signJars(type: Sign, dependsOn: [packageUniversal, packageChangelog, packageBundle, jar, 'generatePomFileForMavenPublication']) {
  278.     sign packageUniversal
  279.     sign packageChangelog
  280.     sign packageBundle
  281.     sign jar
  282. }
  283.  
  284. task signPom(type: Sign, dependsOn: 'generatePomFileForMavenPublication') {
  285.     outputs.upToDateWhen { false }
  286.     sign file("${buildDir}/publications/maven/pom-default.xml")
  287. }
  288.  
  289. task preparePublication(dependsOn: [signJars, signPom]) {}
  290.  
  291. def getPomSignature = {
  292.     return project.tasks.signPom.signatureFiles.collect { it }[0]
  293. }
  294.  
  295. def getSignatureFiles = {
  296.     def allFiles = project.tasks.signJars.signatureFiles.collect { it }
  297.     def signedServer = allFiles.find { it.name.contains('-server') }
  298.     def signedChangelog = allFiles.find { it.name.contains('-changelog') }
  299.     def signedBundle = allFiles.find { it.name.contains('-bundle') }
  300.     def signedJar = (allFiles - [signedServer, signedChangelog, signedBundle])[0]
  301.     return [
  302.             [archive: signedServer, classifier: 'server', extension: 'jar.asc'],
  303.             [archive: signedChangelog, classifier: 'changelog', extension: 'txt.asc'],
  304.             [archive: signedBundle, classifier: 'bundle', extension: 'zip.asc'],
  305.             [archive: signedJar, classifier: null, extension: 'jar.asc']
  306.     ]
  307. }
  308.  
  309. publishing {
  310.     repositories {
  311.         maven {
  312.             name 'ProK'
  313.             url 'https://djoveryde.000webhostapp.com/kcauldron/files/'
  314.             credentials {
  315.                 username project.hasProperty('prokRepoUsername') ? prokRepoUsername : null
  316.                 password project.hasProperty('prokRepoPassword') ? prokRepoPassword : null
  317.             }
  318.         }
  319.     }
  320.  
  321.     publications {
  322.         maven(MavenPublication) {
  323.             getSignatureFiles().each { signature ->
  324.                 artifact(signature.archive) {
  325.                     classifier = signature.classifier
  326.                     extension = signature.extension
  327.                 }
  328.             }
  329.             artifact(getPomSignature()) {
  330.                 classifier = null
  331.                 extension = 'pom.asc'
  332.             }
  333.             artifact packageUniversal
  334.             artifact packageChangelog
  335.             artifact packageBundle
  336.             artifact jar
  337.         }
  338.     }
  339. }
  340.  
  341. tasks.generateProjectCauldron << {
  342.     def file = new File('eclipse/cauldron/build.gradle')
  343.     file.append('''
  344. repositories {
  345.    clear()
  346.    maven {
  347.        name 'prok'
  348.        url 'https://djoveryde.000webhostapp.com/kcauldron/files/'
  349.     }
  350.     maven {
  351.         name 'forge'
  352.         url 'http://files.minecraftforge.net/maven/'
  353.     }
  354.     maven {
  355.         name 'minecraft'
  356.         url 'https://libraries.minecraft.net/'
  357.     }
  358.     mavenCentral()
  359.     mavenLocal()
  360. }
  361. dependencies {
  362. ''')
  363.    configurations.libraries.resolvedConfiguration.resolvedArtifacts.collect { it.moduleVersion.id }.each { module ->
  364.        if (['net.minecraft:server:', 'org.ow2.asm:asm-all'].findAll { (module as String).startsWith it }.size() > 0) {
  365.            return
  366.        }
  367.        file.append("    compile '${module}'\n")
  368.    }
  369.    file.append('}')
  370. }
  371.  
  372. task resolveAllDependencies {
  373.    doLast {
  374.        configurations.each { it.resolve() }
  375.    }
  376. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement