This commit is contained in:
yangyanh 2024-04-29 11:21:51 +08:00 committed by GitHub
commit ef55c880b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 29 additions and 8 deletions

View File

@ -17,7 +17,6 @@
package org.apache.dolphinscheduler.plugin.task.java;
import static org.apache.dolphinscheduler.common.constants.Constants.FOLDER_SEPARATOR;
import static org.apache.dolphinscheduler.plugin.task.java.JavaConstants.JAVA_HOME_VAR;
import static org.apache.dolphinscheduler.plugin.task.java.JavaConstants.PUBLIC_CLASS_NAME_REGEX;
@ -49,7 +48,9 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -183,9 +184,8 @@ public class JavaTask extends AbstractTask {
StringBuilder builder = new StringBuilder();
builder.append(getJavaCommandPath())
.append("java").append(" ")
.append(buildResourcePath()).append(" ")
.append(buildExtDirs()).append(" ")
.append("-jar").append(" ")
.append(taskRequest.getExecutePath()).append(FOLDER_SEPARATOR)
.append(mainJarName).append(" ")
.append(javaParameters.getMainArgs().trim()).append(" ")
.append(javaParameters.getJvmArgs().trim());
@ -290,13 +290,33 @@ public class JavaTask extends AbstractTask {
for (ResourceInfo info : javaParameters.getResourceFilesList()) {
builder.append(JavaConstants.PATH_SEPARATOR);
builder
.append(taskRequest.getExecutePath())
.append(FOLDER_SEPARATOR)
.append(resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal());
}
return builder.toString();
}
protected String buildExtDirs() {
StringBuilder builder = new StringBuilder();
if (javaParameters.isModulePath()) {
builder.append("--module-path");
} else {
builder.append("-Djava.ext.dirs=\"$JAVA_HOME/jre/lib/ext");
}
ResourceContext resourceContext = taskRequest.getResourceContext();
Set<String> set = new HashSet<>();
for (ResourceInfo info : javaParameters.getResourceFilesList()) {
String absolutePathInLocal =
resourceContext.getResourceItem(info.getResourceName()).getResourceAbsolutePathInLocal();
String extdir = absolutePathInLocal.substring(0, absolutePathInLocal.lastIndexOf(File.separator));
if (set.add(extdir)) {
builder.append(JavaConstants.PATH_SEPARATOR);
builder.append(extdir);
}
}
builder.append("\"");
return builder.toString();
}
/**
* Constructs a shell command compiled from a Java source file
*

View File

@ -84,8 +84,9 @@ public class JavaTaskTest {
public void buildJarCommand() {
String homeBinPath = JavaConstants.JAVA_HOME_VAR + File.separator + "bin" + File.separator;
JavaTask javaTask = runJarType();
Assertions.assertEquals(javaTask.buildJarCommand(), homeBinPath
+ "java -classpath .:/tmp/dolphinscheduler/test/executepath:/tmp/dolphinscheduler/test/executepath/opt/share/jar/resource2.jar -jar /tmp/dolphinscheduler/test/executepath/opt/share/jar/main.jar -host 127.0.0.1 -port 8080 -xms:50m");
String buildJarCommand = javaTask.buildJarCommand();
Assertions.assertEquals(buildJarCommand, homeBinPath
+ "java -Djava.ext.dirs=\"$JAVA_HOME/jre/lib/ext;opt/share/jar\" -jar /opt/share/jar/main.jar -host 127.0.0.1 -port 8080 -xms:50m");
}
/**
@ -284,7 +285,7 @@ public class JavaTaskTest {
taskExecutionContext.setTaskAppId("runJavaType");
ResourceContext.ResourceItem resourceItem1 = new ResourceContext.ResourceItem();
resourceItem1.setResourceAbsolutePathInStorage("/opt/share/jar/resource2.jar");
resourceItem1.setResourceAbsolutePathInLocal("opt/share/jar/resource2.jar");
resourceItem1.setResourceAbsolutePathInLocal("/opt/share/jar/resource2.jar");
ResourceContext.ResourceItem resourceItem2 = new ResourceContext.ResourceItem();
resourceItem2.setResourceAbsolutePathInStorage("/opt/share/jar/main.jar");