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
}