diff --git a/pom.xml b/pom.xml
index 9724280..1e6f990 100644
--- a/pom.xml
+++ b/pom.xml
@@ -125,12 +125,18 @@
- copy-dependencies
+ copy
generate-test-resources
- org.slf4j
true
+
+ -
+ com.github.tomakehurst
+ wiremock-jre8-standalone
+ 2.35.2
+
+
diff --git a/src/main/java/org/apache/maven/shared/scriptinterpreter/BeanShellScriptInterpreter.java b/src/main/java/org/apache/maven/shared/scriptinterpreter/BeanShellScriptInterpreter.java
index 5f613f9..a2c6426 100644
--- a/src/main/java/org/apache/maven/shared/scriptinterpreter/BeanShellScriptInterpreter.java
+++ b/src/main/java/org/apache/maven/shared/scriptinterpreter/BeanShellScriptInterpreter.java
@@ -139,8 +139,9 @@ public Object evaluateScript(String script, Map globalVariables, Prin
}
}
}
-
+ ClassLoader curentClassLoader = Thread.currentThread().getContextClassLoader();
try {
+ Thread.currentThread().setContextClassLoader(classLoader);
return engine.eval(script);
} catch (TargetError e) {
throw new ScriptEvaluationException(e.getTarget());
@@ -148,6 +149,8 @@ public Object evaluateScript(String script, Map globalVariables, Prin
throw e;
} catch (Throwable e) {
throw new ScriptEvaluationException(e);
+ } finally {
+ Thread.currentThread().setContextClassLoader(curentClassLoader);
}
} finally {
System.setErr(origErr);
diff --git a/src/main/java/org/apache/maven/shared/scriptinterpreter/GroovyScriptInterpreter.java b/src/main/java/org/apache/maven/shared/scriptinterpreter/GroovyScriptInterpreter.java
index 2308064..3617572 100644
--- a/src/main/java/org/apache/maven/shared/scriptinterpreter/GroovyScriptInterpreter.java
+++ b/src/main/java/org/apache/maven/shared/scriptinterpreter/GroovyScriptInterpreter.java
@@ -68,6 +68,7 @@ public Object evaluateScript(String script, Map globalVariables, Prin
PrintStream origOut = System.out;
PrintStream origErr = System.err;
+ ClassLoader curentClassLoader = Thread.currentThread().getContextClassLoader();
try {
if (scriptOutput != null) {
@@ -80,10 +81,12 @@ public Object evaluateScript(String script, Map globalVariables, Prin
new Binding(globalVariables),
new CompilerConfiguration(CompilerConfiguration.DEFAULT));
+ Thread.currentThread().setContextClassLoader(childFirstLoader);
return interpreter.evaluate(script);
} catch (Throwable e) {
throw new ScriptEvaluationException(e);
} finally {
+ Thread.currentThread().setContextClassLoader(curentClassLoader);
System.setErr(origErr);
System.setOut(origOut);
}
diff --git a/src/test/java/org/apache/maven/shared/scriptinterpreter/ScriptRunnerTest.java b/src/test/java/org/apache/maven/shared/scriptinterpreter/ScriptRunnerTest.java
index f1396ce..fd94f4f 100644
--- a/src/test/java/org/apache/maven/shared/scriptinterpreter/ScriptRunnerTest.java
+++ b/src/test/java/org/apache/maven/shared/scriptinterpreter/ScriptRunnerTest.java
@@ -20,7 +20,7 @@
import java.io.File;
import java.nio.file.Files;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -251,18 +251,17 @@ void theSameClassloaderShouldBeUsed(String scriptType) throws Exception {
try (FileLogger logger = new FileLogger(logFile);
ScriptRunner scriptRunner = new ScriptRunner()) {
- scriptRunner.setClassPath(
- Arrays.asList("target/dependency/slf4j-api.jar", "target/dependency/slf4j-simple.jar"));
+ scriptRunner.setClassPath(Collections.singletonList("target/dependency/wiremock-jre8-standalone.jar"));
scriptRunner.run("test classpath 1", basedir, "class-path1", context, logger);
- assertNotNull(context.get("logger"));
+ assertNotNull(context.get("wireMockServer"));
scriptRunner.run("test classpath 2", basedir, "class-path2", context, logger);
}
String logContent = new String(Files.readAllBytes(logFile.toPath()));
- assertTrue(logContent.contains("INFO test - Test log 1"));
- assertTrue(logContent.contains("INFO test - Test log 2"));
+ assertTrue(logContent.contains("wireMockServer started with port="));
+ assertTrue(logContent.contains("wireMockServer stopped"));
}
private Map buildContext() {
diff --git a/src/test/resources/bsh-test/class-path1.bsh b/src/test/resources/bsh-test/class-path1.bsh
index 1f94e6c..56b1f72 100644
--- a/src/test/resources/bsh-test/class-path1.bsh
+++ b/src/test/resources/bsh-test/class-path1.bsh
@@ -17,11 +17,15 @@
* under the License.
*/
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.github.tomakehurst.wiremock.WireMockServer;
+import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
-Logger logger = LoggerFactory.getLogger("test");
-context.put("logger", logger);
-logger.info("Test log 1");
+
+WireMockServer wireMockServer = new WireMockServer(WireMockConfiguration.options().dynamicPort().dynamicHttpsPort());
+wireMockServer.start();
+
+System.out.println("wireMockServer started with port=" + wireMockServer.port());
+
+context.put("wireMockServer", wireMockServer);
return true;
diff --git a/src/test/resources/bsh-test/class-path2.bsh b/src/test/resources/bsh-test/class-path2.bsh
index 48ffa1f..d8369d2 100644
--- a/src/test/resources/bsh-test/class-path2.bsh
+++ b/src/test/resources/bsh-test/class-path2.bsh
@@ -17,9 +17,11 @@
* under the License.
*/
-import org.slf4j.Logger;
+import com.github.tomakehurst.wiremock.WireMockServer;
-Logger logger = context.get("logger");
-logger.info("Test log 2");
+WireMockServer wireMockServer = context.get("wireMockServer");
+wireMockServer.stop();
+
+System.out.println("wireMockServer stopped");
return true;
diff --git a/src/test/resources/groovy-test/class-path1.groovy b/src/test/resources/groovy-test/class-path1.groovy
index fee04b9..7c374d0 100644
--- a/src/test/resources/groovy-test/class-path1.groovy
+++ b/src/test/resources/groovy-test/class-path1.groovy
@@ -17,11 +17,14 @@
* under the License.
*/
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
+import com.github.tomakehurst.wiremock.WireMockServer
+import com.github.tomakehurst.wiremock.core.WireMockConfiguration
-Logger logger = LoggerFactory.getLogger("test")
-context.put("logger", logger)
-logger.info("Test log 1")
+WireMockServer wireMockServer = new WireMockServer(WireMockConfiguration.options().dynamicPort().dynamicHttpsPort())
+wireMockServer.start()
+
+println("wireMockServer started with port=" + wireMockServer.port())
+
+context.put("wireMockServer", wireMockServer)
return true
diff --git a/src/test/resources/groovy-test/class-path2.groovy b/src/test/resources/groovy-test/class-path2.groovy
index a919848..5246fd3 100644
--- a/src/test/resources/groovy-test/class-path2.groovy
+++ b/src/test/resources/groovy-test/class-path2.groovy
@@ -17,9 +17,11 @@
* under the License.
*/
-import org.slf4j.Logger
+import com.github.tomakehurst.wiremock.WireMockServer;
-Logger logger = context.get("logger")
-logger.info("Test log 2")
+WireMockServer wireMockServer = context.get("wireMockServer")
+wireMockServer.stop()
+
+println("wireMockServer stopped")
return true