This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch maven-3.10.x
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/maven-3.10.x by this push:
new 615ebd4803 Dep: Resolver 2.0.18 and drop unused stuff (#12036)
615ebd4803 is described below
commit 615ebd4803e95c68cda416b172dc15f445a88546
Author: Tamas Cservenak <[email protected]>
AuthorDate: Tue May 19 22:45:32 2026 +0200
Dep: Resolver 2.0.18 and drop unused stuff (#12036)
Upgrades to Resolver 2.0.18 and drops the unused stuff.
Fixes #12034
---
.../DefaultRepositorySystemSessionFactory.java | 12 +-
.../DefaultPluginDependenciesResolver.java | 5 +-
.../internal/MavenSessionBuilderSupplier.java | 24 +-
.../repository/internal/VersionFilterBuilder.java | 47 ----
.../filters/DefaultVersionFilterBuilder.java | 176 -------------
.../scopes/Maven3ScopeManagerConfiguration.java | 19 +-
.../filters/DefaultVersionFilterBuilderTest.java | 277 ---------------------
7 files changed, 22 insertions(+), 538 deletions(-)
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
index c2864a36d7..066ba2aa4c 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
@@ -40,8 +40,6 @@
import org.apache.maven.internal.RepositorySystemSessionFactory;
import org.apache.maven.model.ModelBase;
import org.apache.maven.repository.internal.MavenSessionBuilderSupplier;
-import org.apache.maven.repository.internal.VersionFilterBuilder;
-import
org.apache.maven.repository.internal.scopes.Maven3ScopeManagerConfiguration;
import org.apache.maven.rtinfo.RuntimeInformation;
import org.apache.maven.settings.Mirror;
import org.apache.maven.settings.Proxy;
@@ -58,8 +56,7 @@
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.impl.scope.InternalScopeManager;
-import org.eclipse.aether.internal.impl.scope.ScopeManagerImpl;
+import org.eclipse.aether.collection.VersionFilterBuilder;
import org.eclipse.aether.repository.LocalRepository;
import org.eclipse.aether.repository.LocalRepositoryManager;
import org.eclipse.aether.repository.RepositoryPolicy;
@@ -193,8 +190,6 @@ public class DefaultRepositorySystemSessionFactory
implements RepositorySystemSe
private final GenericVersionScheme versionScheme = new
GenericVersionScheme();
- private final InternalScopeManager scopeManager = new
ScopeManagerImpl(Maven3ScopeManagerConfiguration.INSTANCE);
-
/**
* For legacy consumers; hopefully nobody.
*/
@@ -218,8 +213,7 @@ public RepositorySystemSession.SessionBuilder
newRepositorySessionBuilder(MavenE
configProps.putAll(request.getSystemProperties());
configProps.putAll(request.getUserProperties());
- RepositorySystemSession.SessionBuilder mainSessionBuilder =
- new MavenSessionBuilderSupplier(repoSystem,
scopeManager).get();
+ RepositorySystemSession.SessionBuilder mainSessionBuilder = new
MavenSessionBuilderSupplier(repoSystem).get();
mainSessionBuilder.setCache(request.getRepositoryCache());
mainSessionBuilder.setOffline(request.isOffline());
@@ -280,7 +274,7 @@ public RepositorySystemSession.SessionBuilder
newRepositorySessionBuilder(MavenE
boolean dependencyManagerTransitivity =
ConfigUtils.getBoolean(configProps, false,
MAVEN_RESOLVER_DEPENDENCY_MANAGER_TRANSITIVITY);
if (dependencyManagerTransitivity) {
- mainSessionBuilder.setDependencyManager(new
TransitiveDependencyManager(scopeManager));
+ mainSessionBuilder.setDependencyManager(new
TransitiveDependencyManager());
}
DefaultMirrorSelector mirrorSelector = new DefaultMirrorSelector();
diff --git
a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
index deb89e732b..f7cb0a30a9 100644
---
a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
+++
b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginDependenciesResolver.java
@@ -34,7 +34,6 @@
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.PluginResolutionException;
-import org.apache.maven.repository.internal.VersionFilterBuilder;
import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.DefaultRepositorySystemSession;
import org.eclipse.aether.RepositorySystem;
@@ -45,6 +44,7 @@
import org.eclipse.aether.collection.CollectRequest;
import org.eclipse.aether.collection.DependencyCollectionException;
import org.eclipse.aether.collection.DependencySelector;
+import org.eclipse.aether.collection.VersionFilterBuilder;
import org.eclipse.aether.graph.DependencyFilter;
import org.eclipse.aether.graph.DependencyNode;
import org.eclipse.aether.graph.DependencyVisitor;
@@ -196,8 +196,7 @@ private DependencyNode resolveInternal(
AndDependencySelector.newInstance(session.getDependencySelector(), new
WagonExcluder());
DefaultRepositorySystemSession pluginSession = new
DefaultRepositorySystemSession(session);
- pluginSession.setConfigProperty(
- VersionFilterBuilder.MAVEN_VERSION_FILTER_SUPPRESSED,
Boolean.TRUE.toString());
+
pluginSession.setConfigProperty(VersionFilterBuilder.VERSION_FILTER_SUPPRESSED,
Boolean.TRUE.toString());
pluginSession.setDependencySelector(selector);
pluginSession.setDependencyGraphTransformer(session.getDependencyGraphTransformer());
diff --git
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
index f55ffe6ab8..2e0397834c 100644
---
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
+++
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/MavenSessionBuilderSupplier.java
@@ -32,10 +32,6 @@
import org.eclipse.aether.collection.DependencyManager;
import org.eclipse.aether.collection.DependencySelector;
import org.eclipse.aether.collection.DependencyTraverser;
-import org.eclipse.aether.impl.scope.InternalScopeManager;
-import org.eclipse.aether.internal.impl.scope.ManagedDependencyContextRefiner;
-import org.eclipse.aether.internal.impl.scope.ManagedScopeDeriver;
-import org.eclipse.aether.internal.impl.scope.ManagedScopeSelector;
import org.eclipse.aether.internal.impl.scope.OptionalDependencySelector;
import org.eclipse.aether.internal.impl.scope.ScopeDependencySelector;
import org.eclipse.aether.resolution.ArtifactDescriptorPolicy;
@@ -47,6 +43,9 @@
import
org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
import org.eclipse.aether.util.graph.transformer.ConfigurableVersionSelector;
import org.eclipse.aether.util.graph.transformer.ConflictResolver;
+import org.eclipse.aether.util.graph.transformer.JavaDependencyContextRefiner;
+import org.eclipse.aether.util.graph.transformer.JavaScopeDeriver;
+import org.eclipse.aether.util.graph.transformer.JavaScopeSelector;
import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector;
import org.eclipse.aether.util.graph.traverser.FatArtifactTraverser;
import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
@@ -64,11 +63,9 @@
*/
public class MavenSessionBuilderSupplier implements Supplier<SessionBuilder> {
protected final RepositorySystem repositorySystem;
- protected final InternalScopeManager scopeManager;
- public MavenSessionBuilderSupplier(RepositorySystem repositorySystem,
InternalScopeManager scopeManager) {
+ public MavenSessionBuilderSupplier(RepositorySystem repositorySystem) {
this.repositorySystem = requireNonNull(repositorySystem);
- this.scopeManager = requireNonNull(scopeManager);
}
protected void configureSessionBuilder(SessionBuilder session) {
@@ -78,7 +75,6 @@ protected void configureSessionBuilder(SessionBuilder
session) {
key = "env." + (caseSensitive ? key :
key.toUpperCase(Locale.ENGLISH));
session.setSystemProperty(key, value);
});
- session.setScopeManager(scopeManager);
session.setDependencyTraverser(getDependencyTraverser());
session.setDependencyManager(getDependencyManager());
session.setDependencySelector(getDependencySelector());
@@ -87,16 +83,12 @@ protected void configureSessionBuilder(SessionBuilder
session) {
session.setArtifactDescriptorPolicy(getArtifactDescriptorPolicy());
}
- protected InternalScopeManager getScopeManager() {
- return this.scopeManager;
- }
-
protected DependencyTraverser getDependencyTraverser() {
return new FatArtifactTraverser();
}
protected DependencyManager getDependencyManager() {
- return new ClassicDependencyManager(getScopeManager());
+ return new ClassicDependencyManager();
}
protected DependencySelector getDependencySelector() {
@@ -110,10 +102,10 @@ protected DependencyGraphTransformer
getDependencyGraphTransformer() {
return new ChainedDependencyGraphTransformer(
new ConflictResolver(
new ConfigurableVersionSelector(),
- new ManagedScopeSelector(getScopeManager()),
+ new JavaScopeSelector(),
new SimpleOptionalitySelector(),
- new ManagedScopeDeriver(getScopeManager())),
- new ManagedDependencyContextRefiner(getScopeManager()));
+ new JavaScopeDeriver()),
+ new JavaDependencyContextRefiner());
}
protected ArtifactTypeRegistry getArtifactTypeRegistry() {
diff --git
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionFilterBuilder.java
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionFilterBuilder.java
deleted file mode 100644
index 58fa1e8348..0000000000
---
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/VersionFilterBuilder.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.maven.repository.internal;
-
-import java.util.Optional;
-import java.util.function.Function;
-
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.version.VersionConstraint;
-
-/**
- * Builds {@link VersionFilter} instances out of input expression string.
- *
- * @since 3.10.0
- */
-public interface VersionFilterBuilder {
- /**
- * User property for version filter suppression. Presence of this key will
suppress filter created by this builder.
- */
- String MAVEN_VERSION_FILTER_SUPPRESSED =
"maven.session.versionFilter.suppressed";
-
- /**
- * Builds a version filter based on the given filter expression.
- *
- * @param filterExpression a string containing filter expressions, may be
{@code null}.
- * @param versionConstraintParser version constraint parts to be used
during parsing, must not be {@code null}.
- * @return optional version filter, never {@code null}.
- */
- Optional<VersionFilter> buildVersionFilter(
- String filterExpression, Function<String, VersionConstraint>
versionConstraintParser);
-}
diff --git
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/filters/DefaultVersionFilterBuilder.java
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/filters/DefaultVersionFilterBuilder.java
deleted file mode 100644
index 252476d203..0000000000
---
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/filters/DefaultVersionFilterBuilder.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.maven.repository.internal.filters;
-
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
-import org.apache.maven.repository.internal.VersionFilterBuilder;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.util.ConfigUtils;
-import org.eclipse.aether.util.graph.version.ChainedVersionFilter;
-import
org.eclipse.aether.util.graph.version.ContextPredicateDelegatingVersionFilter;
-import org.eclipse.aether.util.graph.version.ContextualSnapshotVersionFilter;
-import org.eclipse.aether.util.graph.version.GenericQualifiersVersionFilter;
-import org.eclipse.aether.util.graph.version.HighestVersionFilter;
-import org.eclipse.aether.util.graph.version.LowestVersionFilter;
-import org.eclipse.aether.util.graph.version.ReleaseVersionFilter;
-import org.eclipse.aether.util.graph.version.SnapshotVersionFilter;
-import org.eclipse.aether.util.graph.version.VersionPredicateVersionFilter;
-import org.eclipse.aether.version.VersionConstraint;
-
-import static java.util.Objects.requireNonNull;
-
-/**
- * Builds {@link VersionFilter} instances out of input expression string.
- *
- * Expression is a semicolon separated list of filters to apply. By default,
no version filter is applied (like in Maven 3).
- * <br/>
- * Supported filters:
- * <ul>
- * <li>{@code "s"} - contextual snapshot filter (project version decides
are snapshots allowed or not)</li>
- * <li>{@code "nosnapshot"} - unconditional snapshot filter (no snapshot
versions selected from ranges)</li>
- * <li>{@code "norelease"} - unconditional release filter (no release
versions selected from ranges)</li>
- * <li>{@code "nopreview"} - unconditional preview filter (no preview
versions selected from ranges)</li>
- * <li>{@code "noprerelease"} - unconditional pre-release filter (no
preview and rc/cr versions selected from ranges)</li>
- * <li>{@code "noqualifier"} - unconditional any-qualifier filter (no
version with any qualifier selected from ranges)</li>
- * <li>{@code "h"} (shorthand of {@code h(1)}) or {@code "h(num)"} -
highest N version (based on version ordering)</li>
- * <li>{@code "l"} (shorthand of {@code l(1)}) or {@code "l(num)"} -
lowest N version (based on version ordering)</li>
- * <li>{@code "e(V)"} - exclusion filter (excludes versions matching V
version constraint)</li>
- * <li>{@code "i(V)"} - inclusion filter (includes versions matching V
version constraint)</li>
- * </ul>
- * Every filter expression may have "scope" applied, in form of {@code
@G[:A]}. Presence of "scope" narrows the
- * application of filter to given G or G:A.
- * <p>
- * In case of multiple "similar" rule scopes, user should enlist rules from
"most specific" to "least specific".
- * <p>
- * Example filter expression: <code>"h(5);s;e(1)@org.foo:bar</code> will cause:
- * <ul>
- * <li>ranges are filtered for "top 5" (instead of full range)</li>
- * <li>snapshots are banned if root project is not a snapshot</li>
- * <li>if range for <code>org.foo:bar</code> is being processed, version 1
is omitted</li>
- * </ul>
- * Values in this property builds
<code>org.eclipse.aether.collection.VersionFilter</code> instance.
- *
- * @since 3.10.0
- */
-@Singleton
-@Named
-public class DefaultVersionFilterBuilder implements VersionFilterBuilder {
- /**
- * Builds a version filter based on the given filter expression.
- *
- * @param filterExpression a string containing filter expressions, may be
{@code null}.
- * @param versionConstraintParser version constraint parts to be used
during parsing, must not be {@code null}.
- * @return optional version filter, never {@code null}.
- */
- @Override
- public Optional<VersionFilter> buildVersionFilter(
- String filterExpression, Function<String, VersionConstraint>
versionConstraintParser) {
- requireNonNull(versionConstraintParser);
- ArrayList<VersionFilter> filters = new ArrayList<>();
- if (filterExpression != null) {
- List<String> expressions =
Arrays.stream(filterExpression.split(";"))
- .filter(s -> !s.trim().isEmpty())
- .collect(Collectors.toList());
- for (String expression : expressions) {
- Predicate<Artifact> scopePredicate;
- VersionFilter filter;
- if (expression.contains("@")) {
- String remainder =
expression.substring(expression.indexOf('@') + 1);
- if (remainder.contains(":")) {
- String g = remainder.substring(0,
remainder.indexOf(':'));
- String a = remainder.substring(remainder.indexOf(':')
+ 1);
- scopePredicate =
- artifact -> g.equals(artifact.getGroupId()) &&
a.equals(artifact.getArtifactId());
- } else {
- scopePredicate = artifact ->
remainder.equals(artifact.getGroupId());
- }
- expression = expression.substring(0,
expression.indexOf('@'));
- } else {
- scopePredicate = null;
- }
- if ("s".equals(expression)) {
- filter = new ContextualSnapshotVersionFilter();
- } else if ("nosnapshot".equals(expression)) {
- filter = new SnapshotVersionFilter();
- } else if ("norelease".equals(expression)) {
- filter = new ReleaseVersionFilter();
- } else if ("nopreview".equals(expression)) {
- filter =
GenericQualifiersVersionFilter.previewVersionFilter();
- } else if ("noprerelease".equals(expression)) {
- filter =
GenericQualifiersVersionFilter.preReleaseVersionFilter();
- } else if ("noqualifier".equals(expression)) {
- filter =
GenericQualifiersVersionFilter.anyQualifierVersionFilter();
- } else if ("h".equals(expression)) {
- filter = new HighestVersionFilter();
- } else if ("l".equals(expression)) {
- filter = new LowestVersionFilter();
- } else if ((expression.startsWith("h(") ||
expression.startsWith("l(")) && expression.endsWith(")")) {
- int num = Integer.parseInt(expression.substring(2,
expression.length() - 1));
- if (expression.startsWith("h(")) {
- filter = new HighestVersionFilter(num);
- } else {
- filter = new LowestVersionFilter(num);
- }
- } else if ((expression.startsWith("e(") ||
(expression.startsWith("i("))) && expression.endsWith(")")) {
- VersionConstraint versionConstraint =
-
versionConstraintParser.apply(expression.substring(2, expression.length() - 1));
- if (expression.startsWith("e(")) {
- // exclude
- filter = new VersionPredicateVersionFilter(v ->
!versionConstraint.containsVersion(v));
- } else {
- // include
- filter = new
VersionPredicateVersionFilter(versionConstraint::containsVersion);
- }
- } else {
- throw new IllegalArgumentException("Unsupported filter
expression: " + expression);
- }
-
- filters.add(contextPredicate(scopePredicate, filter));
- }
- }
- if (filters.isEmpty()) {
- return Optional.empty();
- } else if (filters.size() == 1) {
- return Optional.of(filters.get(0));
- } else {
- return Optional.of(ChainedVersionFilter.newInstance(filters));
- }
- }
-
- private VersionFilter contextPredicate(Predicate<Artifact>
artifactPredicate, VersionFilter filter) {
- Predicate<VersionFilter.VersionFilterContext> contextPredicate =
- c -> !ConfigUtils.getBoolean(c.getSession(), false,
MAVEN_VERSION_FILTER_SUPPRESSED);
- if (artifactPredicate != null) {
- contextPredicate = contextPredicate.and(
- c ->
artifactPredicate.test(c.getDependency().getArtifact()));
- }
- return new ContextPredicateDelegatingVersionFilter(contextPredicate,
filter);
- }
-}
diff --git
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/scopes/Maven3ScopeManagerConfiguration.java
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/scopes/Maven3ScopeManagerConfiguration.java
index a54a1bc5c3..2cd55b6fa4 100644
---
a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/scopes/Maven3ScopeManagerConfiguration.java
+++
b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/scopes/Maven3ScopeManagerConfiguration.java
@@ -33,6 +33,7 @@
import org.eclipse.aether.internal.impl.scope.ScopeManagerDump;
import org.eclipse.aether.scope.DependencyScope;
import org.eclipse.aether.scope.ResolutionScope;
+import org.eclipse.aether.util.artifact.JavaScopes;
import static org.eclipse.aether.impl.scope.BuildScopeQuery.all;
import static org.eclipse.aether.impl.scope.BuildScopeQuery.byBuildPath;
@@ -44,22 +45,22 @@
/**
* Maven3 scope configurations. Configures scope manager to support Maven3
scopes.
* <p>
- * This manager supports the old Maven 3 dependency scopes + new
"compile-only".
+ * This manager supports the old Maven 3 dependency scopes.
* <p>
* Note: Maven3 CANNOT support Maven 4 scopes "test-only" and "test-runtime",
as it does not distinguish
* resolution scope (the class {@code ResolutionScope} has only "TEST",
instead of "TEST_COMPILE" and "TEST_RUNTIME").
+ * <em>This scope manager configuration is not used in Maven 3!</em>
*
* @since 3.10.0
*/
public final class Maven3ScopeManagerConfiguration implements
ScopeManagerConfiguration {
public static final Maven3ScopeManagerConfiguration INSTANCE = new
Maven3ScopeManagerConfiguration();
public static final String DS_NONE = "none";
- public static final String DS_COMPILE = "compile"; // JavaScopes.COMPILE;
- public static final String DS_COMPILE_ONLY = "compile-only";
- public static final String DS_RUNTIME = "runtime"; // JavaScopes.RUNTIME;
- public static final String DS_PROVIDED = "provided"; //
JavaScopes.PROVIDED;
- public static final String DS_SYSTEM = "system"; // JavaScopes.SYSTEM;
- public static final String DS_TEST = "test"; // JavaScopes.TEST;
+ public static final String DS_COMPILE = JavaScopes.COMPILE;
+ public static final String DS_RUNTIME = JavaScopes.RUNTIME;
+ public static final String DS_PROVIDED = JavaScopes.PROVIDED;
+ public static final String DS_SYSTEM = JavaScopes.SYSTEM;
+ public static final String DS_TEST = JavaScopes.TEST;
public static final String RS_NONE = "none";
public static final String RS_MAIN_COMPILE = "main-compile";
@@ -89,7 +90,7 @@ public boolean isStrictResolutionScopes() {
@Override
public BuildScopeSource getBuildScopeSource() {
return new BuildScopeMatrixSource(
- Collections.singletonList(CommonBuilds.PROJECT_PATH_MAIN),
+ Arrays.asList(CommonBuilds.PROJECT_PATH_MAIN,
CommonBuilds.PROJECT_PATH_TEST),
Arrays.asList(CommonBuilds.BUILD_PATH_COMPILE,
CommonBuilds.BUILD_PATH_RUNTIME),
CommonBuilds.MAVEN_TEST_BUILD_SCOPE);
}
@@ -99,8 +100,6 @@ public Collection<DependencyScope>
buildDependencyScopes(InternalScopeManager in
ArrayList<DependencyScope> result = new ArrayList<>();
result.add(internalScopeManager.createDependencyScope(DS_NONE, false,
Collections.emptySet()));
result.add(internalScopeManager.createDependencyScope(DS_COMPILE,
true, all()));
- result.add(internalScopeManager.createDependencyScope(
- DS_COMPILE_ONLY, false, select(CommonBuilds.PROJECT_PATH_MAIN,
CommonBuilds.BUILD_PATH_COMPILE)));
result.add(internalScopeManager.createDependencyScope(
DS_RUNTIME, true,
byBuildPath(CommonBuilds.BUILD_PATH_RUNTIME)));
result.add(internalScopeManager.createDependencyScope(
diff --git
a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/filters/DefaultVersionFilterBuilderTest.java
b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/filters/DefaultVersionFilterBuilderTest.java
deleted file mode 100644
index 3a01426805..0000000000
---
a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/filters/DefaultVersionFilterBuilderTest.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.maven.repository.internal.filters;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.maven.repository.internal.VersionFilterBuilder;
-import org.eclipse.aether.RepositoryException;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.collection.VersionFilter;
-import org.eclipse.aether.graph.Dependency;
-import org.eclipse.aether.internal.impl.collect.DefaultVersionFilterContext;
-import org.eclipse.aether.resolution.VersionRangeRequest;
-import org.eclipse.aether.resolution.VersionRangeResult;
-import
org.eclipse.aether.util.graph.version.ContextPredicateDelegatingVersionFilter;
-import org.eclipse.aether.util.version.GenericVersionScheme;
-import org.eclipse.aether.version.InvalidVersionSpecificationException;
-import org.eclipse.aether.version.Version;
-import org.eclipse.aether.version.VersionConstraint;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertInstanceOf;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-public class DefaultVersionFilterBuilderTest {
- final GenericVersionScheme versionScheme = new GenericVersionScheme();
- RepositorySystemSession session;
- DefaultVersionFilterBuilder factory;
- Map<String, Object> sessionConfigProperties;
-
- @BeforeEach
- public void prepare() {
- session = mock(RepositorySystemSession.class);
- sessionConfigProperties = new HashMap<>();
-
when(session.getConfigProperties()).thenReturn(sessionConfigProperties);
- factory = new DefaultVersionFilterBuilder();
- }
-
- private Version version(String spec) {
- try {
- return versionScheme.parseVersion(spec);
- } catch (InvalidVersionSpecificationException e) {
- throw new RuntimeException(e); // never happens
- }
- }
-
- private VersionConstraint versionConstraint(String spec) {
- try {
- return versionScheme.parseVersionConstraint(spec);
- } catch (InvalidVersionSpecificationException e) {
- throw new RuntimeException(e);
- }
- }
-
- @Test
- public void versionFilterUnsupportedExpression() {
- // null and empty string are OK
- assertThrows(IllegalArgumentException.class, () ->
factory.buildVersionFilter("[*", this::versionConstraint));
- assertThrows(
- IllegalArgumentException.class, () ->
factory.buildVersionFilter("foobar", this::versionConstraint));
- }
-
- /**
- * Simple assertions for {@code h} filter,
- */
- @Test
- public void versionFilterHighest() {
- VersionFilter vf;
- vf = factory.buildVersionFilter("h",
this::versionConstraint).orElse(null);
- assertNotNull(vf);
- assertInstanceOf(ContextPredicateDelegatingVersionFilter.class, vf);
-
- vf = factory.buildVersionFilter("h(5)",
this::versionConstraint).orElse(null);
- assertNotNull(vf);
- assertInstanceOf(ContextPredicateDelegatingVersionFilter.class, vf);
-
- vf = factory.buildVersionFilter("h(1)@group",
this::versionConstraint).orElse(null);
- assertNotNull(vf);
- assertInstanceOf(ContextPredicateDelegatingVersionFilter.class, vf);
// this is wrapped instance
- }
-
- /**
- * Creating {@code h(1@group)} and incoming artifact G does not match =>
not applied.
- */
- @Test
- public void versionFilterSuppressed() throws RepositoryException {
- VersionFilter vf;
-
- vf = factory.buildVersionFilter("h(2)@group",
this::versionConstraint).orElse(null);
- assertNotNull(vf);
-
- List<Version> versions = Arrays.asList(version("1.0"), version("1.1"),
version("1.2"));
-
- DefaultVersionFilterContext context = new
DefaultVersionFilterContext(session);
- VersionRangeResult result =
- new VersionRangeResult(new
VersionRangeRequest()).setVersions(new ArrayList<>(versions));
- context.set(new Dependency(new DefaultArtifact("group:a:[1,)"), ""),
result);
-
- vf.filterVersions(context);
-
- // hit
- assertEquals(2, context.get().size());
- assertEquals(version("1.1"), context.get().get(0));
- assertEquals(version("1.2"), context.get().get(1));
-
-
sessionConfigProperties.put(VersionFilterBuilder.MAVEN_VERSION_FILTER_SUPPRESSED,
Boolean.TRUE);
-
- context = new DefaultVersionFilterContext(session);
- context.set(new Dependency(new DefaultArtifact("group:a:[1,)"), ""),
result);
-
- // suppressed
- assertEquals(versions, context.get());
- }
-
- /**
- * Creating {@code h(1@group)} and incoming artifact G does not match =>
not applied.
- */
- @Test
- public void versionFilterHLFuncMiss() throws RepositoryException {
- VersionFilter vf;
-
- vf = factory.buildVersionFilter("h(2)@group",
this::versionConstraint).orElse(null);
- assertNotNull(vf);
-
- List<Version> versions = Arrays.asList(version("1.0"), version("1.1"),
version("1.2"));
-
- DefaultVersionFilterContext context = new
DefaultVersionFilterContext(session);
- VersionRangeResult result =
- new VersionRangeResult(new
VersionRangeRequest()).setVersions(new ArrayList<>(versions));
- context.set(new Dependency(new DefaultArtifact("g:a:[1,)"), ""),
result);
-
- vf.filterVersions(context);
-
- vf.filterVersions(context);
- }
-
- /**
- * Creating {@code h(1@group)} and incoming artifact G does match =>
applied.
- */
- @Test
- public void versionFilterHLFuncHit() throws RepositoryException {
- VersionFilter vf;
-
- vf = factory.buildVersionFilter("h(2)@group",
this::versionConstraint).orElse(null);
- assertNotNull(vf);
-
- List<Version> versions = Arrays.asList(version("1.0"), version("1.1"),
version("1.2"));
-
- DefaultVersionFilterContext context = new
DefaultVersionFilterContext(session);
- VersionRangeResult result =
- new VersionRangeResult(new
VersionRangeRequest()).setVersions(new ArrayList<>(versions));
- context.set(new Dependency(new DefaultArtifact("group:a:[1,)"), ""),
result);
-
- vf.filterVersions(context);
-
- assertEquals(2, context.get().size());
- assertEquals(version("1.1"), context.get().get(0));
- assertEquals(version("1.2"), context.get().get(1));
- }
-
- /**
- * Creating {@code l(1@group)} and incoming artifact G does not match =>
not applied.
- */
- @Test
- public void versionFilterLowestFuncMiss() throws RepositoryException {
- VersionFilter vf;
-
- vf = factory.buildVersionFilter("l(2)@group",
this::versionConstraint).orElse(null);
- assertNotNull(vf);
-
- List<Version> versions = Arrays.asList(version("1.0"), version("1.1"),
version("1.2"));
-
- DefaultVersionFilterContext context = new
DefaultVersionFilterContext(session);
- VersionRangeResult result =
- new VersionRangeResult(new
VersionRangeRequest()).setVersions(new ArrayList<>(versions));
- context.set(new Dependency(new DefaultArtifact("g:a:[1,)"), ""),
result);
-
- vf.filterVersions(context);
-
- assertEquals(versions, context.get());
- }
-
- /**
- * Creating {@code l(1@group)} and incoming artifact G does match =>
applied.
- */
- @Test
- public void versionFilterLowestFuncHit() throws RepositoryException {
- VersionFilter vf;
-
- vf = factory.buildVersionFilter("l(2)@group",
this::versionConstraint).orElse(null);
- assertNotNull(vf);
-
- List<Version> versions = Arrays.asList(version("1.0"), version("1.1"),
version("1.2"));
-
- DefaultVersionFilterContext context = new
DefaultVersionFilterContext(session);
- VersionRangeResult result =
- new VersionRangeResult(new
VersionRangeRequest()).setVersions(new ArrayList<>(versions));
- context.set(new Dependency(new DefaultArtifact("group:a:[1,)"), ""),
result);
-
- vf.filterVersions(context);
-
- assertEquals(2, context.get().size());
- assertEquals(version("1.0"), context.get().get(0));
- assertEquals(version("1.1"), context.get().get(1));
- }
-
- @Test
- public void versionFilterExcludeFuncHit() throws RepositoryException {
- VersionFilter vf;
-
- vf = factory.buildVersionFilter("e([1.1,2.0))@group:a",
this::versionConstraint)
- .orElse(null);
- assertNotNull(vf);
-
- List<Version> versions = Arrays.asList(version("1.0"), version("1.1"),
version("1.2"), version("2.0"));
-
- DefaultVersionFilterContext context = new
DefaultVersionFilterContext(session);
- VersionRangeResult result =
- new VersionRangeResult(new
VersionRangeRequest()).setVersions(new ArrayList<>(versions));
- context.set(new Dependency(new DefaultArtifact("group:a:[1,)"), ""),
result);
-
- vf.filterVersions(context);
-
- assertEquals(2, context.get().size());
- assertEquals(version("1.0"), context.get().get(0));
- assertEquals(version("2.0"), context.get().get(1));
- }
-
- @Test
- public void versionFilterIncludeFuncHit() throws RepositoryException {
- VersionFilter vf;
-
- vf = factory.buildVersionFilter("i([1.1,),[2.0,))@group:a",
this::versionConstraint)
- .orElse(null);
- assertNotNull(vf);
-
- List<Version> versions = Arrays.asList(version("1.0"), version("1.1"),
version("1.2"), version("2.0"));
-
- DefaultVersionFilterContext context = new
DefaultVersionFilterContext(session);
- VersionRangeResult result =
- new VersionRangeResult(new
VersionRangeRequest()).setVersions(new ArrayList<>(versions));
- context.set(new Dependency(new DefaultArtifact("group:a:[1,)"), ""),
result);
-
- vf.filterVersions(context);
-
- assertEquals(3, context.get().size());
- assertEquals(version("1.1"), context.get().get(0));
- assertEquals(version("1.2"), context.get().get(1));
- assertEquals(version("2.0"), context.get().get(2));
- }
-}