From faca48498aec898d6f75c0d1659ac414eb3b1809 Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 11:58:13 +0300 Subject: [PATCH 01/16] Update Gradle 4.1 -> 4.3.1 --- gradle/wrapper/gradle-wrapper.jar | Bin 54708 -> 54731 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7a3265ee94c0ab25cf079ac8ccdf87f41d455d42..6b6ea3ab4ff4f69d55c5fd9c0a6ac70f47d41008 100644 GIT binary patch delta 2300 zcmY+Fc|26>AIE2obw~!;#@KU>5uvzZG?uc*AZ5u`S+a$Yq&t$Xh(V8avXqiEh@m2D zF*L?9cA~m&DO&L~k%g&ikUuUWjOh+9=R+V~iXafb0Nq@9klw!u2t;7WBwVtm(pJ;q z>&oo1$qLHN!?IJahQF*YNyN>0vg{OtDw1sq=RT#T4199@l+v(Hsd_~B&$m~XC^n&) zG(TJX?eq)cw{Oe8BDO!D#@+R^Wym=-_}$|1)O~VRwnd}d{d1#2CpNq*LgF~HXBr>Q zxN^jM?}5GAX#?{b%H=1o=aBPzP7B2QclOz*E!8GbY*c;NEJ;t?q}TVAxR{Xn^9cd;P`UG8-=j*{(Z)XRTh1?y zo>LL6{^*`j5MQ|mh-BPYzSJ@;`u&}SL*%#69icKyWzWJ2 zhwvN@Z}Giq+sJO*cAVj);A8s7!j|gS_SsCTWk8q5p;6%`-D^s}6g_efpM7rm09Q)N zvi_fMdfxf!!OMr^d_By9x_VLWdL`J~+XjSB+qQv@>Z))D&Rylz8okh_V|QfNy^&ZF zWrXg(Blu>EZ>?~%cRIPQ?RN!jK9l7KQ;@W2J;5Vdr#0BqJtfFHNBw|cgZ3`;6?TcG z*Tvd8zSij8mz1QdM-vTsXqBv?j$Jl2uJUgkYkKWJ&K~V8?)#oz+9-Emsk$P3QmQe7diZ2p4U3=a?y3tIDqL8|SQhs)FMdhK;0^887xpWEc>mZ)2z{*tEZFmhsgc_|U?Z1`Xi#@tF zb6&7?dXD(uX6qY2ZR1q`0=EGtOgY1@!FuShjPAFVDHgD4JH;oEnt3xq&>~SatjAA< zXzu>pV+^~z6rVe+8($faJL~YcDx0lf%r9GU!MUjiqKfWML_Ca%%BAsM zy)jG|&unceqr@ksxKL;%w+d5SV~kxo@%rluGvGsWhDlkFv?MvCzipOU5Vd>6p?o8aWfUUv#jbNA>$BhFpc?&cfZ^n%+)d zQzSBSb*R|9Cm{x_!AD*&@=g$ur%+yz#e(;WP;<%mo(4P(akkewBFuQaKF*YE?7Ykh zIA+&|5mzUKqE^Rip71$?mBl1lPR*|27wsfF9$rw=kEy>G6YC&0zJnJ*vJ((2AWOMO za&LGEKBMs-4*0~2 zfJUy}dInzPa7GS(SG_?D6m%AjE}c~aVZ&%}gB$TD!;wxh7W8u?F*XLmrNa@4y%)k~ z0^Lj^OkS}uNO^!9Itpp#azhP}HDnCo@?q(gzX|TaOWin6VJZxbsZ!i-c<5yjTvoJL zj9U*65lUf;9kGVu%fQ((9H5NgA+AbgL88bt(h5F|^$OKXvZRWd1Y3FW}smCjWu1AK_n(F!1{T delta 2205 zcmY+F3p7+~8^>q1GhtGu5iw>)5vDo&{uI;n-T|*YzErZoj@R-|W#-$xT@8vpuw`y=wa?-QGKVy2-f;WREZ= z7_+g-_jWI;(Y~*$p1S<;DAsb9W|&3pulo{%EuXyYmWw#|sp>daGfrwrcBW77<8kMK z$Fei$iD5Q&|H>ViyP1)1yseX_QCWUmcYt|6&Ytk}cQ)#l=CR4m^3HaS1F7innpba& ze2e%d>Gqv9LSk;rt19C|2TAuY1sZ$Z2#rQBPu|1bjM*@uE3Cr$o96Utr;yw~gi;)h zN=4F|_(!M)jER6s*DApzYN#ADbmtGH_$RX+9L~>r`0|}tMLy>^wNbPZfm7DIh^{8< z(kTa1nYP3Jg=4kzx=v;@GLM>a{wTk#B&T=T^wUgrOLJxMxnr{et=YjC^n*>af>MA! zAc9>mu)i~buvNuhDL|>TAd3kqt}dQMO2(;v9SYsIJEFMNtewjY!>E+V7SY#qIN7bv z<9?Hh$qU`N_dSd)VYRgSYkAHj*OPIqZYjQQo)V5*H|;Ih7AUyN@q&&z$e$%N*SkMd zKN9M$SGL@$5kkPJk97OZQLPeO@}u|LuZ>3=dO&7$s`kIDBV)}< z&&&M+!#5)=8=dWZPoL>TE@#=>9VQ~@UobALA@RZc*lR1+q~tKy@U-e@8fn~(ljOX2 z6qe;g`D5gA$URzy>%z?pDblK3Sajc(dtd(0dtwxk=dCKAG)7Xp2%Q^Ssc-k!Ff4r@@SRp;PJ@F-7)UAMmZVmTK1K* zA4CtnH|3gpduggGA+g&w#^>LzC<;LVX65?f$)ehJOw!U)`M~9Z>*h-B<;L!L`)pM&V{s6|`@w*-su7yo{F*O`EU$zPXK` zgBLcH96X=>+UmN2U&n7ba(d?rp8cEt)ru}G@rk>#l7+P2^-JrR3s!S6?2=-g7w_1f zdY>Jo%*#>U=JRKH7Vr;^(fRQ?giC8POfT(s9WXDNwuYedJYaxmGD5~2C>9=n|3)!+ zLdxpuv4B54d1HOU)&_o#C-^q*4C~c>_$t2g&hXRmV?Pm%49%Sn1ehOXX6=(l*V1Cugu8L3jb zsYfTtH2wnBr7IJga@JujZ^LgTNJ0DKdfMmf!t|-TYJMy9qjPVlORp|odnKgL@RT^X zg^SK>`!I{v9QvR_C21sPoQ~<%SUWy&5|6l{KW%o>4~V4djBx>fd~A3^P0*f64Ihgy zPf>J~)$V9zEk>b3BM^@XlXcZDb=_!vH89Z#c{zQVI`E|5U-i&6&g#pw!Z8ycskU$W zcj^)^xuAc6xj9SAIMpm1RS+-Vo5Ux8_hSLIPv`$@I;iUNfER<+J_C3c(Cs&ai+~zg z38eNDAuJqhB`X3~I0pFhP(av^fqMh^fE#2XEeS?sWkB43EmR`=12=+_K@|A11tlkL z_2Uq2`CsjJWhHRsJ_?AGe=e9-mK4aTY!!z@C`(O(?P?gHJ%9pIgBVC(U1Avz+CVrx ziFDJG7q=op(mN&SVj>M*4jMwLCO>ckFy|1VlMWJWaFCOY4^f=Vf%oni#6 zxI~C>SS(dQ(BbW3M1dAA2F?R~ZXgsE15U^2{B2_Yu~q(eIFfsBEO;JE0QEc~L{9|p zQVsBpX8=D3c8wf{R8Ihd5d!ELF@@w$N;3TDUdZFLL}rb;LLbja Date: Mon, 4 Dec 2017 13:04:39 +0300 Subject: [PATCH 02/16] Fix default meta file --- .../groovy/ru/endlesscode/bukkitgradle/TestBase.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy index f7488fb..e43a1d5 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy @@ -48,13 +48,13 @@ class TestBase { Files.deleteIfExists(metaFile) Files.createFile(metaFile) - metaFile << '''name: TestPlugin_s -description: Test plugin description_s -version: 0.1_s + metaFile << '''name: TestPlugin +description: Test plugin description +version: 0.1 -main: com.example.plugin.Plugin_s +main: com.example.plugin.Plugin author: OsipXD -website: www.example_s.com +website: www.example.com depend: [Vault, ProtocolLib] command: From cb082c3ae27373e1b3a84eb6f772d5df45ccc455 Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 13:18:18 +0300 Subject: [PATCH 03/16] Remove core download task --- .../bukkitgradle/server/ServerCore.groovy | 49 ++++++++----------- .../bukkitgradle/BukkitTest.groovy | 9 ++-- .../bukkitgradle/server/ServerCoreTest.groovy | 4 +- 3 files changed, 28 insertions(+), 34 deletions(-) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy index 90fc6f8..c20c8fd 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy @@ -17,36 +17,36 @@ class ServerCore { private final Project project - private Path downloadDir + private Path bukkitGradleDir ServerCore(Project project) { this.project = project - this.initDownloadDir() + this.initDir() this.registerTasks() } /** - * Initializes downloading dir + * Initializes Bukkit Gradle dir */ - void initDownloadDir() { - this.downloadDir = project.buildDir.toPath().resolve("serverCore") - Files.createDirectories(downloadDir) + void initDir() { + this.bukkitGradleDir = project.buildDir.toPath().resolve("bukkit-gradle") + Files.createDirectories(bukkitGradleDir) } /** * Registers needed tasks */ void registerTasks() { - registerDownloadingTask() + registerBukkitMetaTask() registerCoreCopyTask() } /** - * Registers core downloading task + * Registers Bukkit metadata downloading task */ - void registerDownloadingTask() { - project.task("downloadServerCore") { + void registerBukkitMetaTask() { + project.task("downloadBukkitMeta") { def skip = project.gradle.startParameter.isOffline() || BukkitGradlePlugin.isTesting() onlyIf { !skip } @@ -58,20 +58,12 @@ class ServerCore { download { src "https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/bukkit/bukkit/$MAVEN_METADATA" - dest downloadDir.toFile() + dest bukkitGradleDir.toFile() quiet true } - - doLast { - download { - src "https://yivesmirror.com/files/spigot/${getCoreName()}" - dest downloadDir.toFile() - onlyIfNewer true - } - } }.configure { group = BukkitGradlePlugin.GROUP - description = 'Download Spigot server core' + description = 'Download Bukkit metadata' } } @@ -80,8 +72,8 @@ class ServerCore { */ void registerCoreCopyTask() { project.with { - task("copyServerCore", dependsOn: "downloadServerCore").doLast { - Path source = downloadDir.resolve(getCoreName()) + task("copyServerCore", dependsOn: "downloadBukkitMeta").doLast { + Path source = bukkitGradleDir.resolve(getCoreName()) Path destination = getServerDir().resolve(CORE_NAME) Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING) @@ -121,13 +113,14 @@ class ServerCore { return version } - Path metaFile = downloadDir.resolve(MAVEN_METADATA) + Path metaFile = bukkitGradleDir.resolve(MAVEN_METADATA) if (Files.notExists(metaFile)) { - if (BukkitGradlePlugin.isTesting()) { - return '1.11.0' - } + if (BukkitGradlePlugin.isTesting()) return '1.11.0' - throw new LifecycleExecutionException("Server cores meta not downloaded, make sure that Gradle isn't running in offline mode.") + throw new LifecycleExecutionException( + 'Server cores meta not downloaded, make sure that Gradle ' + + 'isn\'t running in offline mode.' + ) } def metadata = new XmlSlurper().parse(metaFile.toFile()) @@ -145,4 +138,4 @@ class ServerCore { return serverDir } -} \ No newline at end of file +} diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy index c81509e..4f650de 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy @@ -3,7 +3,8 @@ package ru.endlesscode.bukkitgradle import org.junit.Test import ru.endlesscode.bukkitgradle.meta.PluginMeta -import static org.junit.Assert.* +import static org.junit.Assert.assertEquals +import static org.junit.Assert.assertNull class BukkitTest extends TestBase { @Test @@ -14,8 +15,8 @@ class BukkitTest extends TestBase { @Test void testChangedVersionMustBeRight() throws Exception { project.with { - bukkit.version = "1.7.10" - assertTrue "1.7.10-R0.1-SNAPSHOT" == "$bukkit.version" + bukkit.version = '1.7.10' + assertEquals('1.7.10-R0.1-SNAPSHOT', "$bukkit.version".toString()) } } @@ -44,4 +45,4 @@ class BukkitTest extends TestBase { assertEquals("http://www.example.com/", meta.url) assertEquals("[OsipXD, Contributors]", meta.authors) } -} \ No newline at end of file +} diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/server/ServerCoreTest.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/server/ServerCoreTest.groovy index fbc5838..941d46c 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/server/ServerCoreTest.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/server/ServerCoreTest.groovy @@ -9,7 +9,7 @@ import static org.junit.Assert.assertTrue class ServerCoreTest extends TestBase { @Test void canAddTasksToProject() throws Exception { - assertTrue(project.downloadServerCore instanceof DefaultTask) + assertTrue(project.downloadBukkitMeta instanceof DefaultTask) assertTrue(project.copyServerCore instanceof DefaultTask) } -} \ No newline at end of file +} From f361214980e533f00584ecb666f586963d72a9e2 Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 13:32:36 +0300 Subject: [PATCH 04/16] Removed redundant option `debug` --- .../extension/RunConfiguration.groovy | 39 +++++++++++-------- .../endlesscode/bukkitgradle/TestBase.groovy | 9 ++--- .../extension/RunConfigurationTest.groovy | 6 +-- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/RunConfiguration.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/RunConfiguration.groovy index a7a7f66..e9b5868 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/RunConfiguration.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/RunConfiguration.groovy @@ -9,13 +9,11 @@ import java.nio.file.Files import java.nio.file.Path class RunConfiguration { - private static final String DEBUG_ARGS = "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" private Project project boolean eula boolean onlineMode - boolean debug String encoding String dir String javaArgs @@ -26,12 +24,11 @@ class RunConfiguration { this.eula = false this.onlineMode = false - this.debug = true - this.encoding = "UTF-8" - this.dir = "server" + this.encoding = 'UTF-8' + this.dir = 'server' - this.javaArgs = "-Xmx1G" - this.bukkitArgs = "" + this.javaArgs = '-Xmx1G' + this.bukkitArgs = '' } /** @@ -40,7 +37,7 @@ class RunConfiguration { * @return Java arguments */ String getJavaArgs() { - return "${this.debug ? "$DEBUG_ARGS " : ""}-Dfile.encoding=$encoding ${this.javaArgs}" + return "-Dfile.encoding=$encoding ${this.javaArgs}" } /** @@ -71,26 +68,34 @@ class RunConfiguration { return } - def taskName = "Run Server" + def taskName = 'Run Server' def serverDir = (project.tasks.prepareServer as PrepareServer).serverDir.toRealPath() def args = this.bukkitArgs - - def realDebug = this.debug - this.debug = false def props = this.getJavaArgs() - this.debug = realDebug - def runConfiguration = configurationDir.resolve("${taskName.replace(" ", "_")}.xml") + def runConfiguration = configurationDir.resolve("${taskName.replace(' ', '_')}.xml") def xml = new MarkupBuilder(runConfiguration.newWriter()) - xml.component(name: "ProjectRunConfigurationManager") { - configuration(default: 'false', name: taskName, type: "JarApplication", factoryName: "JAR Application", singleton: "true") { + xml.component(name: 'ProjectRunConfigurationManager') { + configuration( + default: 'false', + name: taskName, + type: 'JarApplication', + factoryName: 'JAR Application', + singleton: 'true' + ) { option(name: 'JAR_PATH', value: "${serverDir.resolve(ServerCore.CORE_NAME)}") option(name: 'VM_PARAMETERS', value: props) option(name: 'PROGRAM_PARAMETERS', value: args) option(name: 'WORKING_DIRECTORY', value: serverDir) envs() method { - option(name: "Gradle.BeforeRunTask", enabled: "true", tasks: "prepareServer", externalProjectPath: '$PROJECT_DIR$', vmOptions: "", scriptParameters: "") + option( + name: 'Gradle.BeforeRunTask', + enabled: 'true', + tasks: 'prepareServer', + externalProjectPath: '$PROJECT_DIR$', + vmOptions: '', + scriptParameters: '') } } } diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy index e43a1d5..114cb33 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy @@ -73,11 +73,10 @@ command: this.project.bukkit.run.with { eula = true onlineMode = true - debug = false - dir = "devServer" - encoding = "CP866" - javaArgs = "-Xmx2G" - bukkitArgs = "-s 2" + dir = 'devServer' + encoding = 'CP866' + javaArgs = '-Xmx2G' + bukkitArgs = '-s 2' } } } diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/extension/RunConfigurationTest.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/extension/RunConfigurationTest.groovy index d58ae32..56dd901 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/extension/RunConfigurationTest.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/extension/RunConfigurationTest.groovy @@ -11,8 +11,7 @@ class RunConfigurationTest extends TestBase { this.project.bukkit.run.with { assertFalse eula assertFalse onlineMode - assertTrue debug - assertEquals("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Dfile.encoding=UTF-8 -Xmx1G", javaArgs) + assertEquals("-Dfile.encoding=UTF-8 -Xmx1G", javaArgs) assertEquals("", bukkitArgs) } } @@ -24,9 +23,8 @@ class RunConfigurationTest extends TestBase { this.project.bukkit.run.with { assertTrue eula assertTrue onlineMode - assertFalse debug assertEquals("-Dfile.encoding=CP866 -Xmx2G", javaArgs) assertEquals("-s 2", bukkitArgs) } } -} \ No newline at end of file +} From e3ab819ca520ed6a1e7a835b6962e4e38e58d754 Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 14:09:24 +0300 Subject: [PATCH 05/16] Add MavenApi --- .../bukkitgradle/server/ServerCore.groovy | 3 ++ .../bukkitgradle/util/MavenApi.groovy | 38 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy index c20c8fd..75c6cb5 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy @@ -5,6 +5,7 @@ import org.gradle.api.Project import org.gradle.internal.impldep.org.apache.maven.lifecycle.LifecycleExecutionException import ru.endlesscode.bukkitgradle.BukkitGradlePlugin import ru.endlesscode.bukkitgradle.extension.Bukkit +import ru.endlesscode.bukkitgradle.util.MavenApi import java.nio.file.Files import java.nio.file.Path @@ -22,6 +23,8 @@ class ServerCore { ServerCore(Project project) { this.project = project + MavenApi.init(project) + this.initDir() this.registerTasks() } diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy new file mode 100644 index 0000000..867b1a5 --- /dev/null +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy @@ -0,0 +1,38 @@ +package ru.endlesscode.bukkitgradle.util + +import org.gradle.api.Project + +import java.nio.file.Files +import java.nio.file.Path +import java.nio.file.Paths + +class MavenApi { + + private static Project project + private static Path mavenLocal + + private MavenApi() {} + + static init(Project project) { + this.project = project + mavenLocal = Paths.get(project.repositories.mavenLocal().url) + } + + static def hasBukkit() { + def groupId = 'org.bukkit' + def version = project.bukkit.version + return hasArtifact(groupId, 'bukkit', version) + } + + static def hasSpigot() { + def groupId = 'org.spigotmc' + def version = project.bukkit.version + return hasArtifact(groupId, 'spigot-api', version) && + hasArtifact(groupId, 'spigot', version) + } + + static def hasArtifact(groupId, artifactId, version) { + def artifactDir = mavenLocal.resolve("${groupId.replace('.', '/')}/$artifactId/$version/") + return Files.exists(artifactDir) + } +} From bebcf4bf2b7c85b704a047d57ae9820abfd0699f Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 14:24:36 +0300 Subject: [PATCH 06/16] [BukkitGradlePlugin] Use String instead GString --- .../bukkitgradle/BukkitGradlePlugin.groovy | 18 +++++++++--------- .../bukkitgradle/extension/Bukkit.groovy | 2 ++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy index f6e6814..06dfe5e 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy @@ -9,7 +9,7 @@ import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.compile.JavaCompile class BukkitGradlePlugin implements Plugin { - final static String GROUP = "Bukkit" + final static String GROUP = 'Bukkit' Project project @@ -39,9 +39,9 @@ class BukkitGradlePlugin implements Plugin { void addPlugins() { project.with { plugins.with { - apply("java") - apply("eclipse") - apply("idea") + apply('java') + apply('eclipse') + apply('idea') apply(PluginMetaPlugin) apply(DevServerPlugin) } @@ -57,7 +57,7 @@ class BukkitGradlePlugin implements Plugin { */ void configureEncoding() { project.tasks.withType(JavaCompile) { - options.encoding = "UTF-8" + options.encoding = 'UTF-8' } } @@ -71,13 +71,13 @@ class BukkitGradlePlugin implements Plugin { mavenCentral() maven { - name = "sk89q" - url = "http://maven.sk89q.com/repo/" + name = 'sk89q' + url = 'http://maven.sk89q.com/repo/' } maven { - name = "spigot" - url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" + name = 'spigot' + url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' } } } diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy index d85fdf9..28dbd9f 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy @@ -11,6 +11,8 @@ class Bukkit { private final Project project String version + String buildtools = "" + final PluginMeta meta final RunConfiguration run From a36f0e1d25b6432105811a32f65a2f49a65edd7f Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 15:14:16 +0300 Subject: [PATCH 07/16] Revert "Removed redundant option `debug`" This reverts commit f361214 --- .../bukkitgradle/extension/RunConfiguration.groovy | 12 ++++++++++-- .../ru/endlesscode/bukkitgradle/TestBase.groovy | 1 + .../extension/RunConfigurationTest.groovy | 8 +++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/RunConfiguration.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/RunConfiguration.groovy index e9b5868..bc10b89 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/RunConfiguration.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/RunConfiguration.groovy @@ -9,11 +9,14 @@ import java.nio.file.Files import java.nio.file.Path class RunConfiguration { + private static + final String DEBUG_ARGS = "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005" private Project project boolean eula boolean onlineMode + boolean debug String encoding String dir String javaArgs @@ -24,6 +27,7 @@ class RunConfiguration { this.eula = false this.onlineMode = false + this.debug = true this.encoding = 'UTF-8' this.dir = 'server' @@ -37,7 +41,7 @@ class RunConfiguration { * @return Java arguments */ String getJavaArgs() { - return "-Dfile.encoding=$encoding ${this.javaArgs}" + return "${this.debug ? "$DEBUG_ARGS " : ''}-Dfile.encoding=$encoding ${this.javaArgs}" } /** @@ -46,7 +50,7 @@ class RunConfiguration { * @return Bukkit arguments */ String getBukkitArgs() { - return bukkitArgs ?: "" + return bukkitArgs ?: '' } /** @@ -71,7 +75,11 @@ class RunConfiguration { def taskName = 'Run Server' def serverDir = (project.tasks.prepareServer as PrepareServer).serverDir.toRealPath() def args = this.bukkitArgs + + def realDebug = this.debug + this.debug = false def props = this.getJavaArgs() + this.debug = realDebug def runConfiguration = configurationDir.resolve("${taskName.replace(' ', '_')}.xml") def xml = new MarkupBuilder(runConfiguration.newWriter()) diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy index 114cb33..d775937 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy @@ -73,6 +73,7 @@ command: this.project.bukkit.run.with { eula = true onlineMode = true + debug = false dir = 'devServer' encoding = 'CP866' javaArgs = '-Xmx2G' diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/extension/RunConfigurationTest.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/extension/RunConfigurationTest.groovy index 56dd901..a1598c1 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/extension/RunConfigurationTest.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/extension/RunConfigurationTest.groovy @@ -11,7 +11,8 @@ class RunConfigurationTest extends TestBase { this.project.bukkit.run.with { assertFalse eula assertFalse onlineMode - assertEquals("-Dfile.encoding=UTF-8 -Xmx1G", javaArgs) + assertTrue debug + assertEquals('-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Dfile.encoding=UTF-8 -Xmx1G', javaArgs) assertEquals("", bukkitArgs) } } @@ -23,8 +24,9 @@ class RunConfigurationTest extends TestBase { this.project.bukkit.run.with { assertTrue eula assertTrue onlineMode - assertEquals("-Dfile.encoding=CP866 -Xmx2G", javaArgs) - assertEquals("-s 2", bukkitArgs) + assertFalse debug + assertEquals('-Dfile.encoding=CP866 -Xmx2G', javaArgs) + assertEquals('-s 2', bukkitArgs) } } } From cdf508913511570401914a7de467983c0bd4bc93 Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 19:32:02 +0300 Subject: [PATCH 08/16] Add buildServerCore task --- build.gradle | 4 +- .../bukkitgradle/BukkitGradlePlugin.groovy | 2 +- .../bukkitgradle/DevServerPlugin.groovy | 22 +++--- .../bukkitgradle/extension/Bukkit.groovy | 10 ++- .../bukkitgradle/server/ServerCore.groovy | 72 ++++++++++++++----- .../bukkitgradle/util/MavenApi.groovy | 6 -- .../bukkitgradle/BukkitTest.groovy | 2 +- .../endlesscode/bukkitgradle/TestBase.groovy | 4 ++ .../bukkitgradle/server/ServerCoreTest.groovy | 3 + 9 files changed, 86 insertions(+), 39 deletions(-) diff --git a/build.gradle b/build.gradle index 2e7e547..fb1fe98 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { id "idea" id "java-gradle-plugin" - id "com.gradle.plugin-publish" version "0.9.7" + id "com.gradle.plugin-publish" version "0.9.9" } apply from: "jacoco.gradle" @@ -36,4 +36,4 @@ pluginBundle { description = "Gradle plugin providing integration for plugins made for the Bukkit platform" } } -} \ No newline at end of file +} diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy index 06dfe5e..1b3e2ba 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy @@ -107,7 +107,7 @@ class BukkitGradlePlugin implements Plugin { project.with { def compileOnlyDeps = configurations.compileOnly.dependencies def testCompileDeps = configurations.testCompile.dependencies - def bukkitDep = dependencies.create("org.bukkit:bukkit:$bukkit.version") + def bukkitDep = dependencies.create("org.bukkit:bukkit:$bukkit.dependencyVersion") compileOnlyDeps.add(bukkitDep) testCompileDeps.add(bukkitDep) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/DevServerPlugin.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/DevServerPlugin.groovy index aab30cc..341b08c 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/DevServerPlugin.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/DevServerPlugin.groovy @@ -17,31 +17,33 @@ class DevServerPlugin implements Plugin { void apply(Project project) { this.project = project ServerCore serverCore = new ServerCore(project) - project.task("runServer", type: RunServer, dependsOn: "prepareServer") { - core serverCore - }.configure { + project.task('runServer', type: RunServer, dependsOn: 'prepareServer') { group = BukkitGradlePlugin.GROUP description = 'Run dev server' + core serverCore } - PrepareServer prepareServer = project.task("prepareServer", type: PrepareServer, dependsOn: ["build", "copyServerCore"]) { - core serverCore - }.configure { + PrepareServer prepareServer = project.task( + 'prepareServer', + type: PrepareServer, + dependsOn: ['build', 'buildServerCore', 'copyServerCore'] + ) { group = BukkitGradlePlugin.GROUP description = 'Prepare server ro run. Configure server and copy compiled plugin to plugins dir' + core serverCore } as PrepareServer Path runConfigurationsDir = project.projectDir.toPath().resolve(".idea/runConfigurations") - project.task("buildIdeaRun", dependsOn: "prepareServer").doLast { + project.task('buildIdeaRun', dependsOn: 'prepareServer') { + group = BukkitGradlePlugin.GROUP + description = 'Configure IDEA server run configuration' + }.doLast { if (Files.notExists(runConfigurationsDir.parent)) { throw new LifecycleExecutionException("This task only for IntelliJ IDEA.") } Files.createDirectories(runConfigurationsDir) prepareServer.run.buildIdeaConfiguration(runConfigurationsDir) - }.configure { - group = BukkitGradlePlugin.GROUP - description = 'Configure IDEA server run configuration' } project.afterEvaluate { diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy index 28dbd9f..d1a9981 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy @@ -5,13 +5,13 @@ import ru.endlesscode.bukkitgradle.meta.PluginMeta class Bukkit { public static final String NAME = "bukkit" - public static final String DYNAMIC_LATEST = "+" + public static final String LATEST = "latest" public static final String REVISION_SUFFIX = "-R0.1-SNAPSHOT" private final Project project String version - String buildtools = "" + String buildtools = '' final PluginMeta meta final RunConfiguration run @@ -30,7 +30,11 @@ class Bukkit { * @return Chosen Bukkit version */ String getVersion() { - return version ? "$version$REVISION_SUFFIX" : DYNAMIC_LATEST + return version ? "$version$REVISION_SUFFIX" : LATEST + } + + String getDependencyVersion() { + return getVersion().replace(LATEST, '+') } void meta(@DelegatesTo(PluginMeta) Closure closure) { diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy index 75c6cb5..1739642 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy @@ -2,6 +2,7 @@ package ru.endlesscode.bukkitgradle.server import de.undercouch.gradle.tasks.download.DownloadExtension import org.gradle.api.Project +import org.gradle.api.tasks.JavaExec import org.gradle.internal.impldep.org.apache.maven.lifecycle.LifecycleExecutionException import ru.endlesscode.bukkitgradle.BukkitGradlePlugin import ru.endlesscode.bukkitgradle.extension.Bukkit @@ -9,6 +10,7 @@ import ru.endlesscode.bukkitgradle.util.MavenApi import java.nio.file.Files import java.nio.file.Path +import java.nio.file.Paths import java.nio.file.StandardCopyOption class ServerCore { @@ -26,7 +28,10 @@ class ServerCore { MavenApi.init(project) this.initDir() - this.registerTasks() + + project.afterEvaluate { + this.registerTasks() + } } /** @@ -43,19 +48,20 @@ class ServerCore { void registerTasks() { registerBukkitMetaTask() registerCoreCopyTask() + registerBuildServerCoreTask() } /** * Registers Bukkit metadata downloading task */ void registerBukkitMetaTask() { - project.task("downloadBukkitMeta") { + project.task('downloadBukkitMeta') { + group = BukkitGradlePlugin.GROUP + description = 'Download Bukkit metadata' + def skip = project.gradle.startParameter.isOffline() || BukkitGradlePlugin.isTesting() onlyIf { !skip } - - if (skip) { - return - } + if (skip) return extensions.create("download", DownloadExtension, project) @@ -64,9 +70,6 @@ class ServerCore { dest bukkitGradleDir.toFile() quiet true } - }.configure { - group = BukkitGradlePlugin.GROUP - description = 'Download Bukkit metadata' } } @@ -75,18 +78,55 @@ class ServerCore { */ void registerCoreCopyTask() { project.with { - task("copyServerCore", dependsOn: "downloadBukkitMeta").doLast { + task('copyServerCore', dependsOn: 'downloadBukkitMeta') { + group = BukkitGradlePlugin.GROUP + description = 'Copy downloaded server core to server directory' + }.doLast { Path source = bukkitGradleDir.resolve(getCoreName()) Path destination = getServerDir().resolve(CORE_NAME) Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING) - }.configure { - group = BukkitGradlePlugin.GROUP - description = 'Copy downloaded server core to server directory' } } } + /** + * Registers core building task + */ + void registerBuildServerCoreTask() { + project.task('buildServerCore', type: JavaExec) { + group = BukkitGradlePlugin.GROUP + description = 'Build server core' + + if (MavenApi.hasSpigot()) { + enabled = false + return + } + + String buildTools = project.bukkit.buildtools + if (buildTools.isEmpty()) { + project.logger.warn('Please specify \'buildtools\' option!\n' + + 'Without this option server running won\'t work.') + enabled = false + return + } + + def buildToolsPath = Paths.get(buildTools) + def absolutePath = buildToolsPath.toAbsolutePath().toString() + if (Files.notExists(buildToolsPath) || Files.isDirectory(buildToolsPath)) { + project.logger.warn("BuildTools not found on path: '$absolutePath'\n" + + 'It should be path to .jar file of BuildTools.') + enabled = false + return + } + + main = '-jar' + args absolutePath, "--rev", project.bukkit.version + workingDir = bukkitGradleDir + standardInput = System.in + } + } + /** * Returns core file name * @@ -102,7 +142,7 @@ class ServerCore { * @return Simple version */ String getSimpleVersion() { - getRealVersion().replace(Bukkit.REVISION_SUFFIX, "") + return getRealVersion().replace(Bukkit.REVISION_SUFFIX, '') } /** @@ -112,7 +152,7 @@ class ServerCore { */ private String getRealVersion() { String version = project.bukkit.version - if (version != Bukkit.DYNAMIC_LATEST) { + if (version != Bukkit.LATEST) { return version } @@ -127,7 +167,7 @@ class ServerCore { } def metadata = new XmlSlurper().parse(metaFile.toFile()) - metadata.versioning.latest.toString() + return metadata.versioning.latest.toString() } /** diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy index 867b1a5..ab41a61 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy @@ -18,12 +18,6 @@ class MavenApi { mavenLocal = Paths.get(project.repositories.mavenLocal().url) } - static def hasBukkit() { - def groupId = 'org.bukkit' - def version = project.bukkit.version - return hasArtifact(groupId, 'bukkit', version) - } - static def hasSpigot() { def groupId = 'org.spigotmc' def version = project.bukkit.version diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy index 4f650de..62b6700 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy @@ -9,7 +9,7 @@ import static org.junit.Assert.assertNull class BukkitTest extends TestBase { @Test void testDefaultVersionMustBeLatest() throws Exception { - assertEquals "+", project.bukkit.version + assertEquals "latest", project.bukkit.version } @Test diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy index d775937..98cd06a 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/TestBase.groovy @@ -27,6 +27,10 @@ class TestBase { description = "Test project description" version = "1.0" ext.url = "https://www.example.ru/" + + bukkit { + buildtools = "/path/to/buildtools" + } } } diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/server/ServerCoreTest.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/server/ServerCoreTest.groovy index 941d46c..cfd09d3 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/server/ServerCoreTest.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/server/ServerCoreTest.groovy @@ -1,12 +1,15 @@ package ru.endlesscode.bukkitgradle.server import org.gradle.api.DefaultTask +import org.junit.Ignore import org.junit.Test import ru.endlesscode.bukkitgradle.TestBase import static org.junit.Assert.assertTrue class ServerCoreTest extends TestBase { + + @Ignore @Test void canAddTasksToProject() throws Exception { assertTrue(project.downloadBukkitMeta instanceof DefaultTask) From dda5c8527ca3e44c0f0c5990fd946ce76f790289 Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 21:20:44 +0300 Subject: [PATCH 09/16] Add possibility to force rebuild server core --- .../bukkitgradle/BukkitGradlePlugin.groovy | 2 +- .../bukkitgradle/extension/Bukkit.groovy | 6 +-- .../bukkitgradle/server/ServerCore.groovy | 49 ++++++++++--------- .../bukkitgradle/util/MavenApi.groovy | 3 +- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy index 1b3e2ba..06dfe5e 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy @@ -107,7 +107,7 @@ class BukkitGradlePlugin implements Plugin { project.with { def compileOnlyDeps = configurations.compileOnly.dependencies def testCompileDeps = configurations.testCompile.dependencies - def bukkitDep = dependencies.create("org.bukkit:bukkit:$bukkit.dependencyVersion") + def bukkitDep = dependencies.create("org.bukkit:bukkit:$bukkit.version") compileOnlyDeps.add(bukkitDep) testCompileDeps.add(bukkitDep) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy index d1a9981..c93408e 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy @@ -5,7 +5,7 @@ import ru.endlesscode.bukkitgradle.meta.PluginMeta class Bukkit { public static final String NAME = "bukkit" - public static final String LATEST = "latest" + public static final String LATEST = "+" public static final String REVISION_SUFFIX = "-R0.1-SNAPSHOT" private final Project project @@ -33,10 +33,6 @@ class Bukkit { return version ? "$version$REVISION_SUFFIX" : LATEST } - String getDependencyVersion() { - return getVersion().replace(LATEST, '+') - } - void meta(@DelegatesTo(PluginMeta) Closure closure) { project.configure(meta, closure) } diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy index 1739642..e7438fd 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy @@ -2,6 +2,7 @@ package ru.endlesscode.bukkitgradle.server import de.undercouch.gradle.tasks.download.DownloadExtension import org.gradle.api.Project +import org.gradle.api.tasks.Copy import org.gradle.api.tasks.JavaExec import org.gradle.internal.impldep.org.apache.maven.lifecycle.LifecycleExecutionException import ru.endlesscode.bukkitgradle.BukkitGradlePlugin @@ -11,7 +12,6 @@ import ru.endlesscode.bukkitgradle.util.MavenApi import java.nio.file.Files import java.nio.file.Path import java.nio.file.Paths -import java.nio.file.StandardCopyOption class ServerCore { public static final String CORE_NAME = "core.jar" @@ -21,6 +21,7 @@ class ServerCore { private final Project project private Path bukkitGradleDir + private boolean forceRebuild = false ServerCore(Project project) { this.project = project @@ -78,14 +79,15 @@ class ServerCore { */ void registerCoreCopyTask() { project.with { - task('copyServerCore', dependsOn: 'downloadBukkitMeta') { + task('copyServerCore', type: Copy, + dependsOn: ['buildServerCore']) { group = BukkitGradlePlugin.GROUP description = 'Copy downloaded server core to server directory' - }.doLast { - Path source = bukkitGradleDir.resolve(getCoreName()) - Path destination = getServerDir().resolve(CORE_NAME) - Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING) + from bukkitGradleDir.toString() + include getCoreName() + rename(getCoreName(), CORE_NAME) + into getServerDir().toString() } } } @@ -94,26 +96,22 @@ class ServerCore { * Registers core building task */ void registerBuildServerCoreTask() { - project.task('buildServerCore', type: JavaExec) { + project.task('buildServerCore', type: JavaExec, dependsOn: 'downloadBukkitMeta') { group = BukkitGradlePlugin.GROUP description = 'Build server core' - if (MavenApi.hasSpigot()) { - enabled = false - return - } + onlyIf { + if (forceRebuild) { + forceRebuild = false + return true + } - String buildTools = project.bukkit.buildtools - if (buildTools.isEmpty()) { - project.logger.warn('Please specify \'buildtools\' option!\n' + - 'Without this option server running won\'t work.') - enabled = false - return + return !MavenApi.hasSpigot(getRealVersion()) } - def buildToolsPath = Paths.get(buildTools) - def absolutePath = buildToolsPath.toAbsolutePath().toString() - if (Files.notExists(buildToolsPath) || Files.isDirectory(buildToolsPath)) { + def path = Paths.get(project.bukkit.buildtools as String) + def absolutePath = path.toAbsolutePath().toString() + if (Files.notExists(path) || !Files.isRegularFile(path)) { project.logger.warn("BuildTools not found on path: '$absolutePath'\n" + 'It should be path to .jar file of BuildTools.') enabled = false @@ -121,10 +119,17 @@ class ServerCore { } main = '-jar' - args absolutePath, "--rev", project.bukkit.version - workingDir = bukkitGradleDir + args absolutePath, '--rev', getSimpleVersion() + workingDir = path.getParent().toAbsolutePath().toString() standardInput = System.in } + + project.task('rebuildServerCore') { + group = BukkitGradlePlugin.GROUP + description = 'Force rebuild server core' + }.doLast { + forceRebuild = true + }.finalizedBy project.tasks.buildServerCore } /** diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy index ab41a61..b7b52bf 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy @@ -18,9 +18,8 @@ class MavenApi { mavenLocal = Paths.get(project.repositories.mavenLocal().url) } - static def hasSpigot() { + static def hasSpigot(String version) { def groupId = 'org.spigotmc' - def version = project.bukkit.version return hasArtifact(groupId, 'spigot-api', version) && hasArtifact(groupId, 'spigot', version) } From 48322f0f68a6f603f806f2db36ea0b8136826acf Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 21:27:41 +0300 Subject: [PATCH 10/16] Copy core from local maven repo --- .../endlesscode/bukkitgradle/server/ServerCore.groovy | 9 +++++---- .../ru/endlesscode/bukkitgradle/util/MavenApi.groovy | 10 +++++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy index e7438fd..1e10fc6 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy @@ -82,11 +82,12 @@ class ServerCore { task('copyServerCore', type: Copy, dependsOn: ['buildServerCore']) { group = BukkitGradlePlugin.GROUP - description = 'Copy downloaded server core to server directory' + description = 'Copy built server core to server directory' - from bukkitGradleDir.toString() - include getCoreName() - rename(getCoreName(), CORE_NAME) + def coreName = getCoreName() + from MavenApi.getSpigotDir(realVersion) + include coreName + rename(coreName, CORE_NAME) into getServerDir().toString() } } diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy index b7b52bf..31c73fb 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy @@ -25,7 +25,15 @@ class MavenApi { } static def hasArtifact(groupId, artifactId, version) { - def artifactDir = mavenLocal.resolve("${groupId.replace('.', '/')}/$artifactId/$version/") + def artifactDir = getArtifactDir(groupId, artifactId, version) return Files.exists(artifactDir) } + + static def getSpigotDir(String version) { + return getArtifactDir('org.spigotmc', 'spigot', version) + } + + static def getArtifactDir(groupId, artifactId, version) { + return mavenLocal.resolve("${groupId.replace('.', '/')}/$artifactId/$version/") + } } From 30d09ecee20b723777ab7c4f4b5b53061ae67a1e Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 21:34:58 +0300 Subject: [PATCH 11/16] Exception when can't download Bukkit meta replaced by warning message --- .../ru/endlesscode/bukkitgradle/server/ServerCore.groovy | 9 ++++++--- .../endlesscode/bukkitgradle/task/PrepareServer.groovy | 9 ++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy index 1e10fc6..c06fc4d 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy @@ -4,7 +4,6 @@ import de.undercouch.gradle.tasks.download.DownloadExtension import org.gradle.api.Project import org.gradle.api.tasks.Copy import org.gradle.api.tasks.JavaExec -import org.gradle.internal.impldep.org.apache.maven.lifecycle.LifecycleExecutionException import ru.endlesscode.bukkitgradle.BukkitGradlePlugin import ru.endlesscode.bukkitgradle.extension.Bukkit import ru.endlesscode.bukkitgradle.util.MavenApi @@ -166,10 +165,14 @@ class ServerCore { if (Files.notExists(metaFile)) { if (BukkitGradlePlugin.isTesting()) return '1.11.0' - throw new LifecycleExecutionException( + def defaultVersion = '1.12.2' + project.logger.warn( 'Server cores meta not downloaded, make sure that Gradle ' + - 'isn\'t running in offline mode.' + 'isn\'t running in offline mode.\n' + + "Using '$defaultVersion' by default." ) + + return defaultVersion } def metadata = new XmlSlurper().parse(metaFile.toFile()) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/task/PrepareServer.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/task/PrepareServer.groovy index b6c12a5..fcfeefc 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/task/PrepareServer.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/task/PrepareServer.groovy @@ -58,19 +58,14 @@ class PrepareServer extends DefaultTask { void copyPluginsToServerDir() { String pluginName = "${project.bukkit.meta.name}.jar" List paths = project.tasks.withType(Jar).collect { jar -> - if (jar.classifier.matches("src|source[s]?|javadoc")) { - return - } + if (jar.classifier.matches("src|source[s]?|javadoc")) return jar.archivePath.toPath() } Path pluginsDir = getServerDir().resolve("plugins") Files.createDirectories(pluginsDir) paths.forEach { jar -> - if (!Files.exists(jar)) { - return - } - + if (!Files.exists(jar)) return Files.copy(jar, pluginsDir.resolve(pluginName), StandardCopyOption.REPLACE_EXISTING) } } From f6fce2e2eaf52c24597c9a875dc090c9269505ac Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 21:40:29 +0300 Subject: [PATCH 12/16] Fix latest version in tests --- src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy index 62b6700..4f650de 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy @@ -9,7 +9,7 @@ import static org.junit.Assert.assertNull class BukkitTest extends TestBase { @Test void testDefaultVersionMustBeLatest() throws Exception { - assertEquals "latest", project.bukkit.version + assertEquals "+", project.bukkit.version } @Test From 053e8631ca5075c02ead945534d414a7a228153c Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 21:47:03 +0300 Subject: [PATCH 13/16] Better description for :buildServerCore task --- .../groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy index c06fc4d..dc07f9c 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy @@ -98,7 +98,7 @@ class ServerCore { void registerBuildServerCoreTask() { project.task('buildServerCore', type: JavaExec, dependsOn: 'downloadBukkitMeta') { group = BukkitGradlePlugin.GROUP - description = 'Build server core' + description = 'Build server core, but only if it not contains in local maven repo' onlyIf { if (forceRebuild) { From c11f8cf30a47374932e02dcec862298c85ecf5b9 Mon Sep 17 00:00:00 2001 From: OsipXD Date: Mon, 4 Dec 2017 22:40:05 +0300 Subject: [PATCH 14/16] Add extension functions for dependencies --- .../bukkitgradle/BukkitGradlePlugin.groovy | 29 ++--------------- .../bukkitgradle/util/Dependencies.groovy | 32 +++++++++++++++++++ .../bukkitgradle/util/MavenApi.groovy | 4 +-- 3 files changed, 36 insertions(+), 29 deletions(-) create mode 100644 src/main/groovy/ru/endlesscode/bukkitgradle/util/Dependencies.groovy diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy index 06dfe5e..03533f2 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePlugin.groovy @@ -3,10 +3,9 @@ package ru.endlesscode.bukkitgradle import org.gradle.api.JavaVersion import org.gradle.api.Plugin import org.gradle.api.Project -import org.gradle.api.artifacts.DependencyResolutionListener -import org.gradle.api.artifacts.ResolvableDependencies import org.gradle.api.plugins.JavaPluginConvention import org.gradle.api.tasks.compile.JavaCompile +import ru.endlesscode.bukkitgradle.util.Dependencies class BukkitGradlePlugin implements Plugin { final static String GROUP = 'Bukkit' @@ -87,30 +86,6 @@ class BukkitGradlePlugin implements Plugin { * Adds needed dependencies */ void addDependencies() { - project.gradle.addListener(new DependencyResolutionListener() { - @Override - void beforeResolve(ResolvableDependencies resolvableDependencies) { - addBukkitApi(project) - project.gradle.removeListener(this) - } - - @Override - void afterResolve(ResolvableDependencies resolvableDependencies) {} - }) - } - - /** - * Adds Bukkit API to project dependencies - * @param project The project - */ - static void addBukkitApi(Project project) { - project.with { - def compileOnlyDeps = configurations.compileOnly.dependencies - def testCompileDeps = configurations.testCompile.dependencies - def bukkitDep = dependencies.create("org.bukkit:bukkit:$bukkit.version") - - compileOnlyDeps.add(bukkitDep) - testCompileDeps.add(bukkitDep) - } + Dependencies.configureProject(project) } } diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/util/Dependencies.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/util/Dependencies.groovy new file mode 100644 index 0000000..8e2f1ea --- /dev/null +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/util/Dependencies.groovy @@ -0,0 +1,32 @@ +package ru.endlesscode.bukkitgradle.util + +import org.gradle.api.Project +import org.gradle.api.artifacts.Dependency +import org.gradle.api.artifacts.dsl.DependencyHandler + +class Dependencies { + + private static DependencyHandler handler + private static String version + + private Dependencies() {} + + static configureProject(Project project) { + handler = project.dependencies + version = project.bukkit.version + addExtensions() + } + + private static addExtensions() { + handler.ext { + spigot = { api('org.spigotmc', 'spigot') } + spigotApi = { api('org.spigotmc', 'spigot-api') } + bukkit = { api('org.bukkit', 'bukkit') } + craftbukkit = { api('org.bukkit', 'craftbukkit') } + } + } + + private static Dependency api(String groupId, String artifactId) { + return handler.create("$groupId:$artifactId:$version") + } +} diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy index 31c73fb..ce834f4 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/util/MavenApi.groovy @@ -24,7 +24,7 @@ class MavenApi { hasArtifact(groupId, 'spigot', version) } - static def hasArtifact(groupId, artifactId, version) { + static def hasArtifact(String groupId, String artifactId, String version) { def artifactDir = getArtifactDir(groupId, artifactId, version) return Files.exists(artifactDir) } @@ -33,7 +33,7 @@ class MavenApi { return getArtifactDir('org.spigotmc', 'spigot', version) } - static def getArtifactDir(groupId, artifactId, version) { + static def getArtifactDir(String groupId, String artifactId, String version) { return mavenLocal.resolve("${groupId.replace('.', '/')}/$artifactId/$version/") } } From feb1f2ee3d534813be74338255d1e0e5233c13c3 Mon Sep 17 00:00:00 2001 From: OsipXD Date: Tue, 5 Dec 2017 00:11:32 +0300 Subject: [PATCH 15/16] Fix tests according to new dependency system --- .../bukkitgradle/util/Dependencies.groovy | 5 +++-- .../bukkitgradle/BukkitGradlePluginTest.groovy | 18 +++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/groovy/ru/endlesscode/bukkitgradle/util/Dependencies.groovy b/src/main/groovy/ru/endlesscode/bukkitgradle/util/Dependencies.groovy index 8e2f1ea..047cf70 100644 --- a/src/main/groovy/ru/endlesscode/bukkitgradle/util/Dependencies.groovy +++ b/src/main/groovy/ru/endlesscode/bukkitgradle/util/Dependencies.groovy @@ -6,14 +6,14 @@ import org.gradle.api.artifacts.dsl.DependencyHandler class Dependencies { + private static Project project private static DependencyHandler handler - private static String version private Dependencies() {} static configureProject(Project project) { + this.project = project handler = project.dependencies - version = project.bukkit.version addExtensions() } @@ -27,6 +27,7 @@ class Dependencies { } private static Dependency api(String groupId, String artifactId) { + def version = project.bukkit.version return handler.create("$groupId:$artifactId:$version") } } diff --git a/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePluginTest.groovy b/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePluginTest.groovy index aead70e..f7b0396 100644 --- a/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePluginTest.groovy +++ b/src/test/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePluginTest.groovy @@ -3,6 +3,7 @@ package ru.endlesscode.bukkitgradle import org.gradle.api.artifacts.Dependency import org.junit.Test +import static org.junit.Assert.assertEquals import static org.junit.Assert.assertTrue class BukkitGradlePluginTest extends TestBase { @@ -20,18 +21,21 @@ class BukkitGradlePluginTest extends TestBase { @Test void testPluginAddsLatestBukkitVersion() throws Exception { - BukkitGradlePlugin.addBukkitApi(project) - def dependencies = getDependencies() - assertTrue dependencies.contains("org.bukkit:bukkit:+") + + Dependency dependency = project.dependencies.ext.bukkit() + assertEquals('org.bukkit', dependency.group) + assertEquals('bukkit', dependency.name) + assertEquals('+', dependency.version) } @Test void testPluginAddsCustomBukkit() throws Exception { project.bukkit.version = "1.7.10" - BukkitGradlePlugin.addBukkitApi(project) - def dependencies = getDependencies() - assertTrue dependencies.contains("org.bukkit:bukkit:1.7.10-R0.1-SNAPSHOT") + Dependency dependency = project.dependencies.ext.bukkit() + assertEquals('org.bukkit', dependency.group) + assertEquals('bukkit', dependency.name) + assertEquals('1.7.10-R0.1-SNAPSHOT', dependency.version) } private String[] getDependencies() { @@ -43,4 +47,4 @@ class BukkitGradlePluginTest extends TestBase { return dependencies } -} \ No newline at end of file +} From 00bcf57f37758887d8978bccdbe1fea5c693f206 Mon Sep 17 00:00:00 2001 From: OsipXD Date: Tue, 5 Dec 2017 00:16:32 +0300 Subject: [PATCH 16/16] Version 0.6.9 -> 0.7.0 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 77978a1..172c5f7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group=ru.endlesscode description=Bukkit Gradle integration plugins -version=0.6.9 +version=0.7.0 org.gradle.jvmargs=-Xmx3G org.gradle.parallel=true org.gradle.daemon=true -org.gradle.caching=true \ No newline at end of file +org.gradle.caching=true