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 @@
-
-
+
@@ -56,7 +55,7 @@
1779565206518
-
+
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