diff --git a/.idea/workspace.xml b/.idea/workspace.xml index ab70455..3fe826b 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,10 +5,9 @@ - - + diff --git a/pom.xml b/pom.xml index 634d649..ca83966 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.strassburger mc-run - 0.0.8 + 0.0.9 maven-plugin MCRun Maven Plugin diff --git a/src/main/java/org/strassburger/mcrun/RunServerMojo.java b/src/main/java/org/strassburger/mcrun/RunServerMojo.java index 5f8c843..83d0a37 100644 --- a/src/main/java/org/strassburger/mcrun/RunServerMojo.java +++ b/src/main/java/org/strassburger/mcrun/RunServerMojo.java @@ -6,7 +6,6 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; -import org.strassburger.mcrun.downloader.PaperServerJarDownloader; import org.strassburger.mcrun.downloader.ServerJarDownloadException; import org.strassburger.mcrun.downloader.ServerJarDownloader; @@ -14,6 +13,8 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.List; @Mojo(name = "run", defaultPhase = LifecyclePhase.PACKAGE) public class RunServerMojo extends AbstractMojo { @@ -38,6 +39,12 @@ public class RunServerMojo extends AbstractMojo { @Parameter(defaultValue = "true") private boolean acceptEula; + @Parameter + private List jvmArgs = new ArrayList<>(); + + @Parameter + private Integer port; + @Override public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Server directory: " + serverDirectory.getAbsolutePath()); @@ -61,12 +68,13 @@ public class RunServerMojo extends AbstractMojo { } catch (ServerJarDownloadException e) { throw new MojoExecutionException("Failed to download server jar", e); } + if (acceptEula) acceptEula(); - ProcessBuilder pb = new ProcessBuilder( - "java", "-Xmx" + memory, "-Xms" + memory, - "-jar", serverJarName, "--nogui" - ); + List command = buildCommand(); + getLog().info("Starting server with command: " + String.join(" ", command)); + + ProcessBuilder pb = new ProcessBuilder(command); pb.directory(serverDirectory); pb.inheritIO(); Process process; @@ -82,6 +90,22 @@ public class RunServerMojo extends AbstractMojo { } } + private List buildCommand() { + List cmd = new ArrayList<>(); + cmd.add("java"); + cmd.add("-Xmx" + memory); + cmd.add("-Xms" + memory); + cmd.addAll(jvmArgs); + cmd.add("-jar"); + cmd.add(serverJarName); + cmd.add("--nogui"); + if (port != null) { + cmd.add("--port"); + cmd.add(String.valueOf(port)); + } + return cmd; + } + private void acceptEula() throws MojoExecutionException { File eula = new File(serverDirectory, "eula.txt"); if (eula.exists()) return; @@ -92,4 +116,4 @@ public class RunServerMojo extends AbstractMojo { throw new MojoExecutionException("Failed to write eula.txt: " + e.getMessage(), e); } } -} +} \ No newline at end of file