You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2026/05/08 11:24:12 UTC
(maven-resolver) branch master updated: Fix: Remove javax.inject dependency (#1859)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new 14c6bc599 Fix: Remove javax.inject dependency (#1859)
14c6bc599 is described below
commit 14c6bc599a39a2fbdc24515f2a2b55c1abf307f5
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Fri May 8 13:24:05 2026 +0200
Fix: Remove javax.inject dependency (#1859)
As it was wrongly introduced in PM #1814. Core of resolver object graph declares javax.inject as optional, but the mentioned PR made it mandatory.
Fixes #1858
---
.../internal/impl/LegacyTrackingFileManager.java | 2 +-
.../impl/NamedLocksTrackingFileManager.java | 2 +-
.../internal/impl/TrackingFileManagerProvider.java | 61 +++-------------------
...vider.java => TrackingFileManagerSupplier.java} | 14 ++---
.../internal/impl/DefaultArtifactResolverTest.java | 2 +-
.../impl/DefaultUpdateCheckManagerTest.java | 2 +-
.../impl/EnhancedLocalRepositoryManagerTest.java | 2 +-
maven-resolver-supplier-mvn3/pom.xml | 33 +++++++++---
.../aether/supplier/RepositorySystemSupplier.java | 4 +-
maven-resolver-supplier-mvn4/pom.xml | 33 +++++++++---
.../aether/supplier/RepositorySystemSupplier.java | 4 +-
11 files changed, 74 insertions(+), 85 deletions(-)
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LegacyTrackingFileManager.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LegacyTrackingFileManager.java
index 32c1aea93..f1af28b60 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LegacyTrackingFileManager.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/LegacyTrackingFileManager.java
@@ -50,7 +50,7 @@ import org.slf4j.LoggerFactory;
*
* @since 2.0.17
* @see NamedLocksTrackingFileManager
- * @see TrackingFileManagerProvider
+ * @see TrackingFileManagerSupplier
*/
public final class LegacyTrackingFileManager implements TrackingFileManager {
private static final Logger LOGGER = LoggerFactory.getLogger(LegacyTrackingFileManager.class);
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/NamedLocksTrackingFileManager.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/NamedLocksTrackingFileManager.java
index 5a48e4557..8eaa5a004 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/NamedLocksTrackingFileManager.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/NamedLocksTrackingFileManager.java
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
*
* @since 2.0.17
* @see LegacyTrackingFileManager
- * @see TrackingFileManagerProvider
+ * @see TrackingFileManagerSupplier
*/
public final class NamedLocksTrackingFileManager implements TrackingFileManager {
private static final Logger LOGGER = LoggerFactory.getLogger(NamedLocksTrackingFileManager.class);
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerProvider.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerProvider.java
index b4e518fc7..a8c4ac325 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerProvider.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerProvider.java
@@ -23,74 +23,25 @@ import javax.inject.Named;
import javax.inject.Provider;
import javax.inject.Singleton;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
-
-import org.eclipse.aether.ConfigurationProperties;
-import org.eclipse.aether.impl.NamedLockFactorySelector;
-import org.eclipse.aether.named.NamedLockFactory;
-import org.eclipse.aether.util.ConfigUtils;
+import static java.util.Objects.requireNonNull;
/**
- * Provides selected instance of {@link TrackingFileManager} implementation.
+ * Bridges to {@link TrackingFileManagerSupplier} when in Guice/Sisu.
*
* @since 2.0.17
*/
@Singleton
@Named
public class TrackingFileManagerProvider implements Provider<TrackingFileManager> {
- public static final String CONFIG_PROPS_PREFIX = ConfigurationProperties.PREFIX_SYSTEM + "trackingFileManager.";
-
- /**
- * Name of the tracking file manager to use. Supported values are "namedLocks" and "legacy". The latter should be
- * used if it is known, that local repository is simultaneously accessed by Maven 3.10+ and older Maven versions.
- * This decision happens early, during boot of the system, hence system properties can be used only as configuration
- * source.
- *
- * @configurationSource {@link System#getProperty(String, String)}
- * @configurationType {@link java.lang.String}
- * @configurationDefaultValue {@link #DEFAULT_TRACKING_FILE_MANAGER_NAME}
- */
- public static final String CONFIG_PROP_TRACKING_FILE_MANAGER_NAME = CONFIG_PROPS_PREFIX + "name";
-
- public static final String DEFAULT_TRACKING_FILE_MANAGER_NAME = "legacy";
-
- private final TrackingFileManager trackingFileManager;
-
- /**
- * Default constructor, to be used in tests; provides "legacy" tracking file manager only.
- */
- public TrackingFileManagerProvider() {
- this.trackingFileManager = new LegacyTrackingFileManager();
- }
+ private final TrackingFileManagerSupplier delegate;
- /**
- * Constructor to be used in production.
- */
@Inject
- public TrackingFileManagerProvider(NamedLockFactorySelector selector) {
- // this is early construction; no session, hence we must rely on system properties instead
- Map<String, String> config = new HashMap<>();
- for (String name : System.getProperties().stringPropertyNames()) {
- config.put(name, System.getProperty(name));
- }
- String tfmName = ConfigUtils.getString(
- config, DEFAULT_TRACKING_FILE_MANAGER_NAME, CONFIG_PROP_TRACKING_FILE_MANAGER_NAME);
- if ("legacy".equals(tfmName)) {
- this.trackingFileManager = new LegacyTrackingFileManager();
- } else if ("namedLocks".equals(tfmName)) {
- NamedLockFactory factory = selector.getNamedLockFactory(config);
- long time = selector.getLockWaitTime(config);
- TimeUnit timeUnit = selector.getLockWaitTimeUnit(config);
- this.trackingFileManager = new NamedLocksTrackingFileManager(factory, time, timeUnit);
- } else {
- throw new IllegalArgumentException("Unknown tracking file manager name: " + tfmName);
- }
+ public TrackingFileManagerProvider(TrackingFileManagerSupplier metadataResolverProvider) {
+ this.delegate = requireNonNull(metadataResolverProvider);
}
@Override
public TrackingFileManager get() {
- return trackingFileManager;
+ return delegate.get();
}
}
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerProvider.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerSupplier.java
similarity index 91%
copy from maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerProvider.java
copy to maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerSupplier.java
index b4e518fc7..a1ec34639 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerProvider.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/TrackingFileManagerSupplier.java
@@ -20,12 +20,12 @@ package org.eclipse.aether.internal.impl;
import javax.inject.Inject;
import javax.inject.Named;
-import javax.inject.Provider;
import javax.inject.Singleton;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+import java.util.function.Supplier;
import org.eclipse.aether.ConfigurationProperties;
import org.eclipse.aether.impl.NamedLockFactorySelector;
@@ -33,13 +33,13 @@ import org.eclipse.aether.named.NamedLockFactory;
import org.eclipse.aether.util.ConfigUtils;
/**
- * Provides selected instance of {@link TrackingFileManager} implementation.
+ * Supplies selected instance of {@link TrackingFileManager} implementation.
*
- * @since 2.0.17
+ * @since 2.0.18
*/
@Singleton
@Named
-public class TrackingFileManagerProvider implements Provider<TrackingFileManager> {
+public class TrackingFileManagerSupplier implements Supplier<TrackingFileManager> {
public static final String CONFIG_PROPS_PREFIX = ConfigurationProperties.PREFIX_SYSTEM + "trackingFileManager.";
/**
@@ -49,7 +49,7 @@ public class TrackingFileManagerProvider implements Provider<TrackingFileManager
* source.
*
* @configurationSource {@link System#getProperty(String, String)}
- * @configurationType {@link java.lang.String}
+ * @configurationType {@link String}
* @configurationDefaultValue {@link #DEFAULT_TRACKING_FILE_MANAGER_NAME}
*/
public static final String CONFIG_PROP_TRACKING_FILE_MANAGER_NAME = CONFIG_PROPS_PREFIX + "name";
@@ -61,7 +61,7 @@ public class TrackingFileManagerProvider implements Provider<TrackingFileManager
/**
* Default constructor, to be used in tests; provides "legacy" tracking file manager only.
*/
- public TrackingFileManagerProvider() {
+ public TrackingFileManagerSupplier() {
this.trackingFileManager = new LegacyTrackingFileManager();
}
@@ -69,7 +69,7 @@ public class TrackingFileManagerProvider implements Provider<TrackingFileManager
* Constructor to be used in production.
*/
@Inject
- public TrackingFileManagerProvider(NamedLockFactorySelector selector) {
+ public TrackingFileManagerSupplier(NamedLockFactorySelector selector) {
// this is early construction; no session, hence we must rely on system properties instead
Map<String, String> config = new HashMap<>();
for (String name : System.getProperties().stringPropertyNames()) {
diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java
index d738800cc..182825840 100644
--- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java
+++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultArtifactResolverTest.java
@@ -374,7 +374,7 @@ public class DefaultArtifactResolverTest {
resolver = setupArtifactResolver(
new StubVersionResolver(),
new DefaultUpdateCheckManager(
- new TrackingFileManagerProvider().get(),
+ new TrackingFileManagerSupplier().get(),
new DefaultUpdatePolicyAnalyzer(),
new DefaultPathProcessor()));
diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManagerTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManagerTest.java
index 01a11688a..526be9bf0 100644
--- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManagerTest.java
+++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultUpdateCheckManagerTest.java
@@ -79,7 +79,7 @@ public class DefaultUpdateCheckManagerTest {
TestFileUtils.createTempDir().toURI().toURL().toString())
.build();
manager = new DefaultUpdateCheckManager(
- new TrackingFileManagerProvider().get(), new DefaultUpdatePolicyAnalyzer(), new DefaultPathProcessor());
+ new TrackingFileManagerSupplier().get(), new DefaultUpdatePolicyAnalyzer(), new DefaultPathProcessor());
metadata = new DefaultMetadata(
"gid", "aid", "ver", "maven-metadata.xml", Metadata.Nature.RELEASE_OR_SNAPSHOT, metadataFile);
artifact = new DefaultArtifact("gid", "aid", "", "ext", "ver").setFile(artifactFile);
diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java
index 30e687581..03238190d 100644
--- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java
+++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/EnhancedLocalRepositoryManagerTest.java
@@ -98,7 +98,7 @@ public class EnhancedLocalRepositoryManagerTest {
"gid", "aid", null, "maven-metadata.xml", Nature.RELEASE, TestFileUtils.createTempFile("metadata"));
session = TestUtils.newSession();
- trackingFileManager = new TrackingFileManagerProvider().get();
+ trackingFileManager = new TrackingFileManagerSupplier().get();
manager = getManager();
artifactFile = new File(basedir, manager.getPathForLocalArtifact(artifact));
diff --git a/maven-resolver-supplier-mvn3/pom.xml b/maven-resolver-supplier-mvn3/pom.xml
index 0cb91fb37..d6620dc98 100644
--- a/maven-resolver-supplier-mvn3/pom.xml
+++ b/maven-resolver-supplier-mvn3/pom.xml
@@ -133,13 +133,6 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
- <!-- just build time -->
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -153,4 +146,30 @@
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>ban-javax.inject</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <phase>validate</phase>
+ <configuration>
+ <rules>
+ <bannedDependencies>
+ <excludes>
+ <exclude>javax.inject:javax.inject</exclude>
+ </excludes>
+ </bannedDependencies>
+ </rules>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java b/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
index 3200e85a4..7912b864f 100644
--- a/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
+++ b/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
@@ -87,7 +87,7 @@ import org.eclipse.aether.internal.impl.LocalPathPrefixComposerFactory;
import org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory;
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
import org.eclipse.aether.internal.impl.TrackingFileManager;
-import org.eclipse.aether.internal.impl.TrackingFileManagerProvider;
+import org.eclipse.aether.internal.impl.TrackingFileManagerSupplier;
import org.eclipse.aether.internal.impl.checksum.DefaultChecksumAlgorithmFactorySelector;
import org.eclipse.aether.internal.impl.checksum.Md5ChecksumAlgorithmFactory;
import org.eclipse.aether.internal.impl.checksum.Sha1ChecksumAlgorithmFactory;
@@ -225,7 +225,7 @@ public class RepositorySystemSupplier implements Supplier<RepositorySystem> {
}
protected TrackingFileManager createTrackingFileManager() {
- return new TrackingFileManagerProvider(getNamedLockFactorySelector()).get();
+ return new TrackingFileManagerSupplier(getNamedLockFactorySelector()).get();
}
private LocalPathComposer localPathComposer;
diff --git a/maven-resolver-supplier-mvn4/pom.xml b/maven-resolver-supplier-mvn4/pom.xml
index 08f4c120e..848eeee6a 100644
--- a/maven-resolver-supplier-mvn4/pom.xml
+++ b/maven-resolver-supplier-mvn4/pom.xml
@@ -139,13 +139,6 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
- <!-- just build time -->
- <dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <scope>provided</scope>
- <optional>true</optional>
- </dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -159,4 +152,30 @@
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>ban-javax.inject</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <phase>validate</phase>
+ <configuration>
+ <rules>
+ <bannedDependencies>
+ <excludes>
+ <exclude>javax.inject:javax.inject</exclude>
+ </excludes>
+ </bannedDependencies>
+ </rules>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java b/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
index d515dcf84..8ce257924 100644
--- a/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
+++ b/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
@@ -91,7 +91,7 @@ import org.eclipse.aether.internal.impl.LocalPathPrefixComposerFactory;
import org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory;
import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
import org.eclipse.aether.internal.impl.TrackingFileManager;
-import org.eclipse.aether.internal.impl.TrackingFileManagerProvider;
+import org.eclipse.aether.internal.impl.TrackingFileManagerSupplier;
import org.eclipse.aether.internal.impl.checksum.DefaultChecksumAlgorithmFactorySelector;
import org.eclipse.aether.internal.impl.checksum.Md5ChecksumAlgorithmFactory;
import org.eclipse.aether.internal.impl.checksum.Sha1ChecksumAlgorithmFactory;
@@ -229,7 +229,7 @@ public class RepositorySystemSupplier implements Supplier<RepositorySystem> {
}
protected TrackingFileManager createTrackingFileManager() {
- return new TrackingFileManagerProvider(getNamedLockFactorySelector()).get();
+ return new TrackingFileManagerSupplier(getNamedLockFactorySelector()).get();
}
private LocalPathComposer localPathComposer;