Skip to content

Commit 4894a84

Browse files
committed
Add maven-classworlds module to replace plexus-classworlds dependency
- Copy complete plexus-classworlds source code to impl/maven-classworlds - Replace all plexus-classworlds dependencies with maven-classworlds - Update module structure and assembly configuration - Maintain original package structure for now - All builds passing Implements first step of issue #11028
1 parent 99447f1 commit 4894a84

File tree

143 files changed

+6843
-154
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

143 files changed

+6843
-154
lines changed

apache-maven/src/assembly/component.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ under the License.
2323
<useProjectArtifact>false</useProjectArtifact>
2424
<outputDirectory>boot</outputDirectory>
2525
<includes>
26-
<include>org.codehaus.plexus:plexus-classworlds</include>
26+
<include>org.apache.maven:maven-classworlds</include>
2727
</includes>
2828
</dependencySet>
2929
<dependencySet>
3030
<useProjectArtifact>false</useProjectArtifact>
3131
<outputDirectory>lib</outputDirectory>
3232
<excludes>
33-
<exclude>org.codehaus.plexus:plexus-classworlds</exclude>
33+
<exclude>org.apache.maven:maven-classworlds</exclude>
3434
</excludes>
3535
</dependencySet>
3636
</dependencySets>

apache-maven/src/assembly/maven/bin/mvn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ concat_lines() {
190190

191191
MAVEN_PROJECTBASEDIR="`find_maven_basedir "$@"`"
192192
MAVEN_OPTS="$MAVEN_OPTS `concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config"`"
193-
LAUNCHER_JAR=`echo "$MAVEN_HOME"/boot/plexus-classworlds-*.jar`
193+
LAUNCHER_JAR=`echo "$MAVEN_HOME"/boot/maven-classworlds-*.jar`
194194
LAUNCHER_CLASS=org.codehaus.plexus.classworlds.launcher.Launcher
195195

196196
# For Cygwin and MinGW, switch paths to Windows format before running java(1) command

apache-maven/src/assembly/maven/bin/mvn.cmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ goto processArgs
247247
:endHandleArgs
248248
call :processArgs %*
249249

250-
for %%i in ("%MAVEN_HOME%"\boot\plexus-classworlds-*) do set LAUNCHER_JAR="%%i"
250+
for %%i in ("%MAVEN_HOME%"\boot\maven-classworlds-*) do set LAUNCHER_JAR="%%i"
251251
set LAUNCHER_CLASS=org.codehaus.plexus.classworlds.launcher.Launcher
252252
if "%MAVEN_MAIN_CLASS%"=="" @set MAVEN_MAIN_CLASS=org.apache.maven.cling.MavenCling
253253

apache-maven/src/main/appended-resources/META-INF/LICENSE.vm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ subject to the terms and conditions of the following licenses:
6767
#* *##end
6868
#* *###
6969
#* *### Classworlds is in boot directory, not in lib
70-
#* *##if ( $project.artifact.artifactId == "plexus-classworlds" )
70+
#* *##if ( $project.artifact.artifactId == "maven-classworlds" )
7171
#* *##set ( $directory = 'boot' )
7272
#* *##end
7373
#* *###

compat/maven-compat/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ under the License.
117117
</dependency>
118118

119119
<dependency>
120-
<groupId>org.codehaus.plexus</groupId>
121-
<artifactId>plexus-classworlds</artifactId>
120+
<groupId>org.apache.maven</groupId>
121+
<artifactId>maven-classworlds</artifactId>
122122
</dependency>
123123
<dependency>
124124
<groupId>org.codehaus.plexus</groupId>

compat/maven-embedder/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ under the License.
146146
</dependency>
147147

148148
<dependency>
149-
<groupId>org.codehaus.plexus</groupId>
150-
<artifactId>plexus-classworlds</artifactId>
149+
<groupId>org.apache.maven</groupId>
150+
<artifactId>maven-classworlds</artifactId>
151151
</dependency>
152152
<dependency>
153153
<groupId>org.codehaus.plexus</groupId>

compat/maven-embedder/src/main/java/org/apache/maven/cli/CliRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
import java.util.Properties;
2424

2525
import org.apache.commons.cli.CommandLine;
26+
import org.apache.maven.api.classworlds.ClassWorld;
2627
import org.apache.maven.execution.DefaultMavenExecutionRequest;
2728
import org.apache.maven.execution.MavenExecutionRequest;
28-
import org.codehaus.plexus.classworlds.ClassWorld;
2929

3030
/**
3131
* CliRequest

compat/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@
5959
import org.apache.maven.InternalErrorException;
6060
import org.apache.maven.Maven;
6161
import org.apache.maven.api.Constants;
62+
import org.apache.maven.api.classworlds.ClassRealm;
63+
import org.apache.maven.api.classworlds.ClassWorld;
64+
import org.apache.maven.api.classworlds.NoSuchRealmException;
6265
import org.apache.maven.api.cli.extensions.CoreExtension;
6366
import org.apache.maven.api.cli.extensions.InputSource;
6467
import org.apache.maven.api.services.MessageBuilder;
@@ -117,9 +120,6 @@
117120
import org.codehaus.plexus.DefaultPlexusContainer;
118121
import org.codehaus.plexus.PlexusConstants;
119122
import org.codehaus.plexus.PlexusContainer;
120-
import org.codehaus.plexus.classworlds.ClassWorld;
121-
import org.codehaus.plexus.classworlds.realm.ClassRealm;
122-
import org.codehaus.plexus.classworlds.realm.NoSuchRealmException;
123123
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
124124
import org.codehaus.plexus.components.secdispatcher.SecDispatcher;
125125
import org.codehaus.plexus.logging.LoggerManager;
@@ -225,7 +225,7 @@ public int doMain(String[] args, String workingDirectory, PrintStream stdout, Pr
225225
final Set<String> realms;
226226
if (classWorld != null) {
227227
realms = new HashSet<>();
228-
for (ClassRealm realm : classWorld.getRealms()) {
228+
for (ClassRealm realm : ((org.codehaus.plexus.classworlds.ClassWorld) classWorld).getRealms()) {
229229
realms.add(realm.getId());
230230
}
231231
} else {
@@ -246,7 +246,8 @@ public int doMain(String[] args, String workingDirectory, PrintStream stdout, Pr
246246
return doMain(cliRequest);
247247
} finally {
248248
if (classWorld != null) {
249-
for (ClassRealm realm : new ArrayList<>(classWorld.getRealms())) {
249+
for (ClassRealm realm :
250+
new ArrayList<>(((org.codehaus.plexus.classworlds.ClassWorld) classWorld).getRealms())) {
250251
String realmId = realm.getId();
251252
if (!realms.contains(realmId)) {
252253
try {
@@ -673,13 +674,16 @@ void properties(CliRequest cliRequest) throws Exception {
673674

674675
PlexusContainer container(CliRequest cliRequest) throws Exception {
675676
if (cliRequest.classWorld == null) {
676-
cliRequest.classWorld =
677-
new ClassWorld("plexus.core", Thread.currentThread().getContextClassLoader());
677+
cliRequest.classWorld = new org.codehaus.plexus.classworlds.ClassWorld(
678+
"plexus.core", Thread.currentThread().getContextClassLoader());
678679
}
679680

680681
ClassRealm coreRealm = cliRequest.classWorld.getClassRealm("plexus.core");
681682
if (coreRealm == null) {
682-
coreRealm = cliRequest.classWorld.getRealms().iterator().next();
683+
coreRealm = ((org.codehaus.plexus.classworlds.ClassWorld) cliRequest.classWorld)
684+
.getRealms()
685+
.iterator()
686+
.next();
683687
}
684688

685689
List<File> extClassPath = parseExtClasspath(cliRequest);
@@ -691,8 +695,8 @@ PlexusContainer container(CliRequest cliRequest) throws Exception {
691695
ClassRealm containerRealm = setupContainerRealm(cliRequest.classWorld, coreRealm, extClassPath, extensions);
692696

693697
ContainerConfiguration cc = new DefaultContainerConfiguration()
694-
.setClassWorld(cliRequest.classWorld)
695-
.setRealm(containerRealm)
698+
.setClassWorld((org.codehaus.plexus.classworlds.ClassWorld) cliRequest.classWorld)
699+
.setRealm((org.codehaus.plexus.classworlds.realm.ClassRealm) containerRealm)
696700
.setClassPathScanning(PlexusConstants.SCANNING_INDEX)
697701
.setAutoWiring(true)
698702
.setJSR250Lifecycle(true)
@@ -708,7 +712,7 @@ PlexusContainer container(CliRequest cliRequest) throws Exception {
708712

709713
final CoreExports exports = new CoreExports(containerRealm, exportedArtifacts, exportedPackages);
710714

711-
Thread.currentThread().setContextClassLoader(containerRealm);
715+
Thread.currentThread().setContextClassLoader(containerRealm.getClassLoader());
712716

713717
DefaultPlexusContainer container = new DefaultPlexusContainer(cc, new AbstractModule() {
714718
@Override
@@ -734,12 +738,14 @@ protected void configure() {
734738
};
735739
for (CoreExtensionEntry extension : extensions) {
736740
container.discoverComponents(
737-
extension.getClassRealm(),
741+
(org.codehaus.plexus.classworlds.realm.ClassRealm) extension.getClassRealm(),
738742
new AbstractModule() {
739743
@Override
740744
protected void configure() {
741745
try {
742-
container.lookup(Injector.class).discover(extension.getClassRealm());
746+
container
747+
.lookup(Injector.class)
748+
.discover(extension.getClassRealm().getClassLoader());
743749
} catch (Throwable e) {
744750
// ignore
745751
e.printStackTrace();
@@ -807,8 +813,8 @@ private List<CoreExtensionEntry> loadCoreExtensions(
807813
}
808814

809815
ContainerConfiguration cc = new DefaultContainerConfiguration() //
810-
.setClassWorld(cliRequest.classWorld) //
811-
.setRealm(containerRealm) //
816+
.setClassWorld((org.codehaus.plexus.classworlds.ClassWorld) cliRequest.classWorld) //
817+
.setRealm((org.codehaus.plexus.classworlds.realm.ClassRealm) containerRealm) //
812818
.setClassPathScanning(PlexusConstants.SCANNING_INDEX) //
813819
.setAutoWiring(true) //
814820
.setJSR250Lifecycle(true) //
@@ -874,7 +880,8 @@ private ClassRealm setupContainerRealm(
874880
if (!extClassPath.isEmpty() || !extensions.isEmpty()) {
875881
ClassRealm extRealm = classWorld.newRealm("maven.ext", null);
876882

877-
extRealm.setParentRealm(coreRealm);
883+
((org.codehaus.plexus.classworlds.realm.ClassRealm) extRealm)
884+
.setParentRealm((org.codehaus.plexus.classworlds.realm.ClassRealm) coreRealm);
878885

879886
slf4jLogger.debug("Populating class realm '{}'", extRealm.getId());
880887

@@ -888,11 +895,11 @@ private ClassRealm setupContainerRealm(
888895
Set<String> exportedPackages = entry.getExportedPackages();
889896
ClassRealm realm = entry.getClassRealm();
890897
for (String exportedPackage : exportedPackages) {
891-
extRealm.importFrom(realm, exportedPackage);
898+
extRealm.importFrom(realm.getClassLoader(), exportedPackage);
892899
}
893900
if (exportedPackages.isEmpty()) {
894901
// sisu uses realm imports to establish component visibility
895-
extRealm.importFrom(realm, realm.getId());
902+
extRealm.importFrom(realm.getClassLoader(), realm.getId());
896903
}
897904
}
898905

compat/maven-embedder/src/main/java/org/apache/maven/cli/internal/BootstrapCoreExtensionManager.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
import org.apache.maven.RepositoryUtils;
3434
import org.apache.maven.api.Service;
3535
import org.apache.maven.api.Session;
36+
import org.apache.maven.api.classworlds.ClassRealm;
37+
import org.apache.maven.api.classworlds.ClassWorld;
3638
import org.apache.maven.api.cli.extensions.CoreExtension;
3739
import org.apache.maven.api.model.Plugin;
3840
import org.apache.maven.api.services.ArtifactCoordinatesFactory;
@@ -64,8 +66,6 @@
6466
import org.apache.maven.resolver.RepositorySystemSessionFactory;
6567
import org.codehaus.plexus.DefaultPlexusContainer;
6668
import org.codehaus.plexus.PlexusContainer;
67-
import org.codehaus.plexus.classworlds.ClassWorld;
68-
import org.codehaus.plexus.classworlds.realm.ClassRealm;
6969
import org.eclipse.aether.RepositorySystem;
7070
import org.eclipse.aether.RepositorySystemSession;
7171
import org.eclipse.aether.RepositorySystemSession.CloseableSession;
@@ -174,12 +174,13 @@ private CoreExtensionEntry createExtension(CoreExtension extension, List<Artifac
174174
Set<String> providedArtifacts = Collections.emptySet();
175175
String classLoadingStrategy = extension.getClassLoadingStrategy();
176176
if (STRATEGY_PARENT_FIRST.equals(classLoadingStrategy)) {
177-
realm.importFrom(parentRealm, "");
177+
realm.importFrom(parentRealm.getClassLoader(), "");
178178
} else if (STRATEGY_PLUGIN.equals(classLoadingStrategy)) {
179179
coreExports.getExportedPackages().forEach((p, cl) -> realm.importFrom(cl, p));
180180
providedArtifacts = coreExports.getExportedArtifacts();
181181
} else if (STRATEGY_SELF_FIRST.equals(classLoadingStrategy)) {
182-
realm.setParentRealm(parentRealm);
182+
((org.codehaus.plexus.classworlds.realm.ClassRealm) realm)
183+
.setParentRealm((org.codehaus.plexus.classworlds.realm.ClassRealm) parentRealm);
183184
} else {
184185
throw new IllegalArgumentException("Unsupported class-loading strategy '"
185186
+ classLoadingStrategy + "'. Supported values are: " + STRATEGY_PARENT_FIRST

compat/maven-plugin-api/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ under the License.
7979
</exclusions>
8080
</dependency>
8181
<dependency>
82-
<groupId>org.codehaus.plexus</groupId>
83-
<artifactId>plexus-classworlds</artifactId>
82+
<groupId>org.apache.maven</groupId>
83+
<artifactId>maven-classworlds</artifactId>
8484
</dependency>
8585
<dependency>
8686
<groupId>org.apache.maven.resolver</groupId>

0 commit comments

Comments
 (0)