Skip to content

Commit dea5f14

Browse files
authored
Bug: SecDispatcher is managed by legacy Plexus DI (apache#11711)
And as Plexus DI is capable only of field injection, and 2.0 of SecDispatcher contains `final` field as it was converted to JSR330, it causes WARNINGs on Java 26 due JEP 500. Fix: drop component from Plexus XML (this was our last managed Plexus component) and provide a drop in replacement, a provider w/ name "maven".
1 parent 5bcfc50 commit dea5f14

File tree

2 files changed

+61
-20
lines changed

2 files changed

+61
-20
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
package org.apache.maven.internal.secdispatcher;
20+
21+
import javax.inject.Inject;
22+
import javax.inject.Named;
23+
import javax.inject.Provider;
24+
import javax.inject.Singleton;
25+
26+
import java.util.Map;
27+
28+
import org.sonatype.plexus.components.cipher.PlexusCipher;
29+
import org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher;
30+
import org.sonatype.plexus.components.sec.dispatcher.PasswordDecryptor;
31+
import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
32+
33+
/**
34+
* Provides a security dispatcher named "maven". Maven uses this security dispatcher instead of the default.
35+
* The default security dispatcher is unaware of Maven specific configuration file locations and should not be used
36+
* (injected or referenced in any way) at all in any Maven related codebase.
37+
* <p>
38+
* Note: This whole stuff is really deprecated and replaced with proper security in Maven 4, while this one is
39+
* just "security through obscurity".
40+
*
41+
* @since 3.9.13
42+
*/
43+
@Singleton
44+
@Named("maven")
45+
public class SecDispatcherProvider implements Provider<SecDispatcher> {
46+
private final SecDispatcher instance;
47+
48+
@Inject
49+
public SecDispatcherProvider(
50+
PlexusCipher plexusCipher,
51+
Map<String, PasswordDecryptor> decryptors,
52+
@Named("${maven.settings.security.configurationFile:-~/.m2/settings-security.xml}")
53+
String configurationFile) {
54+
instance = new DefaultSecDispatcher(plexusCipher, decryptors, configurationFile);
55+
}
56+
57+
@Override
58+
public SecDispatcher get() {
59+
return instance;
60+
}
61+
}

maven-core/src/main/resources/META-INF/plexus/components.xml

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -110,25 +110,5 @@ under the License.
110110
<!-- END SNIPPET: site -->
111111
</configuration>
112112
</component>
113-
114-
<component>
115-
<role>org.sonatype.plexus.components.sec.dispatcher.SecDispatcher</role>
116-
<role-hint>maven</role-hint>
117-
<implementation>org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher</implementation>
118-
<description>Maven Security dispatcher</description>
119-
<requirements>
120-
<requirement>
121-
<role>org.sonatype.plexus.components.cipher.PlexusCipher</role>
122-
<field-name>_cipher</field-name>
123-
</requirement>
124-
<requirement>
125-
<role>org.sonatype.plexus.components.sec.dispatcher.PasswordDecryptor</role>
126-
<field-name>_decryptors</field-name>
127-
</requirement>
128-
</requirements>
129-
<configuration>
130-
<_configuration-file>~/.m2/settings-security.xml</_configuration-file>
131-
</configuration>
132-
</component>
133113
</components>
134114
</component-set>

0 commit comments

Comments
 (0)