This is an automated email from the ASF dual-hosted git repository.
elharo pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/maven-remote-resources-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new 5540561 Close the remote resources classloader after execution (#273)
(#281)
5540561 is described below
commit 55405612a425ebed621e6ccf92f079190b3a2a5a
Author: Elliotte Rusty Harold <[email protected]>
AuthorDate: Wed Oct 28 13:53:08 2026 +0000
Close the remote resources classloader after execution (#273) (#281)
---
.../remote/AbstractProcessRemoteResourcesMojo.java | 13 +++++++++++--
.../resources/remote/RemoteResourcesMojoTest.java | 22 ++++++++++++++++++++++
2 files changed, 33 insertions(+), 2 deletions(-)
diff --git
a/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
b/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
index d1062ee..b848a35 100644
---
a/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
+++
b/src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java
@@ -395,6 +395,8 @@ public abstract class AbstractProcessRemoteResourcesMojo
extends AbstractMojo {
private VelocityEngine velocity;
+ private RemoteResourcesClassLoader classLoader;
+
protected final RepositorySystem repoSystem;
/**
@@ -460,7 +462,7 @@ public abstract class AbstractProcessRemoteResourcesMojo
extends AbstractMojo {
List<File> resourceBundleArtifacts =
downloadBundles(resourceBundles);
supplementModels = loadSupplements(supplementalModels);
- ClassLoader classLoader =
initalizeClassloader(resourceBundleArtifacts);
+ classLoader = initalizeClassloader(resourceBundleArtifacts);
Thread.currentThread().setContextClassLoader(classLoader);
@@ -501,6 +503,13 @@ public abstract class AbstractProcessRemoteResourcesMojo
extends AbstractMojo {
}
} finally {
Thread.currentThread().setContextClassLoader(origLoader);
+ if (classLoader != null) {
+ try {
+ classLoader.close();
+ } catch (IOException e) {
+ getLog().debug("Error closing remote resources
classloader: " + e.getMessage(), e);
+ }
+ }
}
}
@@ -906,7 +915,7 @@ public abstract class AbstractProcessRemoteResourcesMojo
extends AbstractMojo {
return bundleArtifacts;
}
- private ClassLoader initalizeClassloader(List<File> artifacts) throws
MojoExecutionException {
+ private RemoteResourcesClassLoader initalizeClassloader(List<File>
artifacts) throws MojoExecutionException {
RemoteResourcesClassLoader cl = new RemoteResourcesClassLoader(null);
try {
for (File artifact : artifacts) {
diff --git
a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
index b812148..bbdbed6 100644
---
a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
+++
b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
@@ -327,6 +327,28 @@ public class RemoteResourcesMojoTest extends
AbstractMojoTestCase {
assertTrue(file.exists());
}
+ public void testClassLoaderIsClosedAfterExecution() throws Exception {
+ final MavenProjectResourcesStub project =
createTestProject("default-closeclassloader");
+ final ProcessRemoteResourcesMojo mojo =
lookupProcessMojoWithSettings(project, new String[] {"test:test:1.0"});
+
+ setupDefaultProject(project);
+
+ String path = pathOf(new DefaultArtifact(
+ "test", "test", VersionRange.createFromVersion("1.0"), null,
"jar", "", new DefaultArtifactHandler()));
+
+ File file = new File(path);
+ file.getParentFile().mkdirs();
+ buildResourceBundle("default-closeclassloader-create", null, new
String[] {"SIMPLE.txt"}, file);
+
+ mojo.execute();
+
+ RemoteResourcesClassLoader classLoader =
+ (RemoteResourcesClassLoader) getVariableValueFromObject(mojo,
"classLoader");
+ assertNotNull(classLoader);
+ // resources from the bundle jars must no longer be served by the
closed classloader
+ assertNull(classLoader.getResource("SIMPLE.txt"));
+ }
+
public void testVelocityUTF8() throws Exception {
final MavenProjectResourcesStub project =
createTestProject("default-utf8");
final ProcessRemoteResourcesMojo mojo =
lookupProcessMojoWithSettings(project, new String[] {"test:test:1.2"});