diff --git a/pom.xml b/pom.xml index 0a24d60..900de15 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ xyz.wbsite deployee-maven-plugin - 3.0.1-SNAPSHOT + 3.0.2-SNAPSHOT maven-plugin deployee diff --git a/src/main/java/xyz/wbsite/deployee/Deploy.java b/src/main/java/xyz/wbsite/deployee/Deploy.java index 5bebb25..19bf7b9 100644 --- a/src/main/java/xyz/wbsite/deployee/Deploy.java +++ b/src/main/java/xyz/wbsite/deployee/Deploy.java @@ -117,6 +117,14 @@ public class Deploy extends AbstractMojo { sh = StrUtil.replace(sh, "{1}", targetFile); sh = StrUtil.replace(sh, "{2}", server.getDeployActive()); sh = StrUtil.replace(sh, "{3}", server.getDeployPort()); + + String appArgStr = ""; + if (server.getAppArgs() != null && server.getAppArgs().length > 0) { + appArgStr = String.join(" ", server.getAppArgs()); + } + sh = StrUtil.replace(sh, "{4}", appArgStr); + sh = StrUtil.replace(sh, "{5}", String.valueOf(server.isLibSeparated())); + if (StrUtil.isNotBlank(server.getDeployActive())) { client.write(serverPath + "/service-" + server.getDeployActive() + ".sh", sh); client.exec("chmod +x {}", serverPath + "/service-" + server.getDeployActive() + ".sh"); @@ -180,6 +188,17 @@ public class Deploy extends AbstractMojo { }); printLog(StrUtil.format("upload package {}", "finish")); + if (server.isLibSeparated()) { + File libDir = new File(targetPath, "lib"); + if (libDir.exists() && libDir.isDirectory()) { + printLog("start upload lib directory"); + client.putFiles(libDir.getAbsolutePath(), serverPath + "/lib"); + printLog("upload lib directory finish"); + } else { + printLog("[WARN] lib directory not found: {}, skip lib upload", libDir.getAbsolutePath()); + } + } + printLog("stop service {}", server.getName()); client.exec("systemctl stop {}.service", server.getName()); diff --git a/src/main/java/xyz/wbsite/deployee/config/Server.java b/src/main/java/xyz/wbsite/deployee/config/Server.java index 56b30ee..7454655 100644 --- a/src/main/java/xyz/wbsite/deployee/config/Server.java +++ b/src/main/java/xyz/wbsite/deployee/config/Server.java @@ -48,6 +48,18 @@ public class Server { */ private JreVersion jre; + /** + * 自定义启动参数,例如 --xxx=yyy,最终输出到service.sh的APP_ARG中 + * @parameter + */ + private String[] appArgs; + + /** + * 是否启用lib分离部署模式,启用后将上传target/lib目录并使用-cp方式启动 + * @parameter defaultValue="false" + */ + private boolean libSeparated; + public enum JreVersion { jre8, jre17 @@ -124,4 +136,20 @@ public class Server { public void setJre(JreVersion jre) { this.jre = jre; } + + public String[] getAppArgs() { + return appArgs; + } + + public void setAppArgs(String[] appArgs) { + this.appArgs = appArgs; + } + + public boolean isLibSeparated() { + return libSeparated; + } + + public void setLibSeparated(boolean libSeparated) { + this.libSeparated = libSeparated; + } } diff --git a/src/main/resources/service.sh b/src/main/resources/service.sh index 3f70d66..5df9423 100644 --- a/src/main/resources/service.sh +++ b/src/main/resources/service.sh @@ -10,7 +10,9 @@ ACTIVE={2} #port PORT={3} #more arg -APP_ARG= +APP_ARG={4} +#lib separated mode +LIB_SEP={5} usage() { echo "Usage: sh service-*.sh [start|stop|restart|status]" @@ -31,7 +33,11 @@ start(){ if [ $? -eq "0" ]; then echo "${APP_NAME} is already running. pid=${pid} ." else - nohup ${JAVA_HOME}/bin/java -Dfile.encoding=UTF-8 -jar $APP_NAME --spring.profiles.active=$ACTIVE --server.port=${PORT} $APP_ARG > /dev/null 2>&1 & + if [ "$LIB_SEP" = "true" ]; then + nohup ${JAVA_HOME}/bin/java -Dfile.encoding=UTF-8 -Dloader.path=lib -jar $APP_NAME --spring.profiles.active=$ACTIVE --server.port=${PORT} $APP_ARG > /dev/null 2>&1 & + else + nohup ${JAVA_HOME}/bin/java -Dfile.encoding=UTF-8 -jar $APP_NAME --spring.profiles.active=$ACTIVE --server.port=${PORT} $APP_ARG > /dev/null 2>&1 & + fi fi }