Skip to content

Commit 2390ac3

Browse files
committed
Added runServer task
Also: - Fixed tests hierarchy
1 parent 797a8ae commit 2390ac3

14 files changed

Lines changed: 102 additions & 62 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ apply from: 'jacoco.gradle'
1010

1111
group "ru.endlesscode"
1212
description "Bukkit Gradle integration plugins"
13-
version "0.3.5"
13+
version "0.4.0"
1414

1515
sourceCompatibility = targetCompatibility = JavaVersion.VERSION_1_8
1616

src/main/groovy/ru/endlesscode/bukkitgradle/extension/Bukkit.groovy

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,18 @@ import ru.endlesscode.bukkitgradle.meta.PluginMeta
66
class Bukkit {
77
public static final String NAME = "bukkit"
88
public static final String DYNAMIC_LATEST = "+"
9-
10-
private static final String REVISION_SUFFIX = "-R0.1-SNAPSHOT"
9+
public static final String REVISION_SUFFIX = "-R0.1-SNAPSHOT"
1110

1211
private final Project project
1312

1413
String version
1514
final PluginMeta meta
15+
final RunConfiguration run
1616

1717
Bukkit(Project project) {
1818
this.project = project
1919
this.meta = new PluginMeta(project)
20+
this.run = new RunConfiguration(project)
2021
}
2122

2223
/**
@@ -33,4 +34,8 @@ class Bukkit {
3334
void meta(@DelegatesTo(PluginMeta) Closure<?> closure) {
3435
project.configure(meta, closure)
3536
}
37+
38+
void run(@DelegatesTo(RunConfiguration) Closure<?> closure) {
39+
project.configure(run, closure)
40+
}
3641
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package ru.endlesscode.bukkitgradle.extension
2+
3+
import org.gradle.api.Project
4+
5+
class RunConfiguration {
6+
private Project project
7+
8+
RunConfiguration(Project project) {
9+
this.project = project
10+
}
11+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package ru.endlesscode.bukkitgradle.server
2+
3+
import org.gradle.api.DefaultTask
4+
import org.gradle.api.tasks.Input
5+
import org.gradle.api.tasks.TaskAction
6+
7+
class RunServer extends DefaultTask {
8+
@Input
9+
ServerCore core
10+
11+
@TaskAction
12+
void launchServer() {
13+
final ProcessBuilder processBuilder = new ProcessBuilder("java", "-Xmx1G", "-jar", "core.jar")
14+
processBuilder.redirectErrorStream(true)
15+
processBuilder.directory(new File(project.buildDir, core.getShortVersion()))
16+
17+
logger.lifecycle("Starting Server...")
18+
final Process serverProcess = processBuilder.start()
19+
StreamSpy.spy(serverProcess.in, logger)
20+
StreamSpy.spy(System.in, serverProcess.out)
21+
22+
serverProcess.waitFor()
23+
logger.lifecycle("Server stopped")
24+
}
25+
}

src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerCore.groovy

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import ru.endlesscode.bukkitgradle.extension.Bukkit
66

77
import java.nio.file.Files
88
import java.nio.file.Path
9+
import java.nio.file.StandardCopyOption
910

1011
class ServerCore {
1112
private static final String MAVEN_METADATA = "maven-metadata.xml"
@@ -44,7 +45,6 @@ class ServerCore {
4445
*/
4546
void registerUpdateMetaTask() {
4647
def task = project.task("updateServerCoreMetadata")
47-
task.onlyIf { !project.gradle.startParameter.isOffline() }
4848
task.extensions.create("download", DownloadExtension, project)
4949

5050
task.doLast {
@@ -61,7 +61,6 @@ class ServerCore {
6161
*/
6262
void registerDownloadingTask() {
6363
def task = project.task("downloadServerCore", dependsOn: "updateServerCoreMetadata")
64-
task.onlyIf { !project.gradle.startParameter.isOffline() }
6564
task.extensions.create("download", DownloadExtension, project)
6665

6766
task.doLast {
@@ -78,16 +77,12 @@ class ServerCore {
7877
*/
7978
void registerCoreCopyTask() {
8079
project.with {
81-
task("copyServerCore", dependsOn: "downloadServerCore") {
82-
doLast {
83-
Path source = downloadDir.resolve(getCoreName())
84-
Path destination = buildDir.toPath().resolve(CORE_NAME)
85-
86-
copy {
87-
from source
88-
into destination
89-
}
90-
}
80+
task("prepareServerCore", dependsOn: "downloadServerCore").doLast {
81+
Path source = downloadDir.resolve(getCoreName())
82+
Path destinationDir = buildDir.toPath().resolve(getShortVersion())
83+
Files.createDirectories(destinationDir)
84+
85+
Files.copy(source, destinationDir.resolve(CORE_NAME), StandardCopyOption.REPLACE_EXISTING)
9186
}
9287
}
9388
}
@@ -101,6 +96,15 @@ class ServerCore {
10196
return "spigot-${getRealVersion()}.jar"
10297
}
10398

99+
/**
100+
* Returns version without revision suffix
101+
*
102+
* @return Short version
103+
*/
104+
String getShortVersion() {
105+
getRealVersion().replace(Bukkit.REVISION_SUFFIX, "")
106+
}
107+
104108
/**
105109
* Resolves and returns dynamic version
106110
*
@@ -114,7 +118,6 @@ class ServerCore {
114118

115119
Path metaFile = downloadDir.resolve(MAVEN_METADATA)
116120
def metadata = new XmlSlurper().parse(metaFile.toFile())
117-
118-
return metadata.versioning.latest.toString()
121+
metadata.versioning.latest.toString()
119122
}
120123
}

src/main/groovy/ru/endlesscode/bukkitgradle/server/ServerLauncher.groovy

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package ru.endlesscode.bukkitgradle.server
2+
3+
import org.gradle.api.logging.Logger
4+
5+
class StreamSpy extends Thread {
6+
static void spy(InputStream input, Logger logger) {
7+
startDaemon {
8+
input.eachLine { line ->
9+
logger.lifecycle line
10+
}
11+
}
12+
}
13+
14+
static void spy(InputStream input, OutputStream output) {
15+
startDaemon {
16+
def writer = output.newWriter()
17+
input.eachLine { line ->
18+
writer.write "${line}\n"
19+
writer.flush()
20+
}
21+
}
22+
}
23+
}

src/main/groovy/ru/endlesscode/bukkitgradle/server/TestServerPlugin.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ class TestServerPlugin implements Plugin<Project> {
77

88
@Override
99
void apply(Project project) {
10-
new ServerCore(project)
10+
project.task("runServer", type: RunServer, dependsOn: "prepareServerCore") {
11+
core new ServerCore(project)
12+
}
1113
}
1214
}

src/test/groovy/ru/endlesscode/bukkitgradle/bukkit/BukkitGradlePluginTest.groovy renamed to src/test/groovy/ru/endlesscode/bukkitgradle/BukkitGradlePluginTest.groovy

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
package ru.endlesscode.bukkitgradle.bukkit
1+
package ru.endlesscode.bukkitgradle
22

33
import org.gradle.api.artifacts.Dependency
44
import org.junit.Test
5-
import ru.endlesscode.bukkitgradle.BukkitGradlePlugin
65

76
import static org.junit.Assert.assertTrue
87

src/test/groovy/ru/endlesscode/bukkitgradle/bukkit/BukkitTest.groovy renamed to src/test/groovy/ru/endlesscode/bukkitgradle/BukkitTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package ru.endlesscode.bukkitgradle.bukkit
1+
package ru.endlesscode.bukkitgradle
22

33
import org.junit.Test
44
import ru.endlesscode.bukkitgradle.meta.PluginMeta

0 commit comments

Comments
 (0)