diff --git a/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8041DependencyResolutionScope.java b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8041DependencyResolutionScope.java new file mode 100644 index 000000000..a5fe4782b --- /dev/null +++ b/core-it-suite/src/test/java/org/apache/maven/it/MavenITmng8041DependencyResolutionScope.java @@ -0,0 +1,56 @@ +/* + * 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.it; + +import java.io.File; +import java.util.List; + +import org.apache.maven.shared.verifier.Verifier; +import org.apache.maven.shared.verifier.util.ResourceExtractor; +import org.junit.jupiter.api.Test; + +/** + * This is a test set for MNG-8041. + */ +class MavenITmng8041DependencyResolutionScope extends AbstractMavenIntegrationTestCase { + + MavenITmng8041DependencyResolutionScope() { + super("[4.0.0-beta-5,)"); + } + + /** + * Verify the dependency tree resolution + */ + @Test + void testScopeResolution() throws Exception { + File testDir = ResourceExtractor.simpleExtractResources(getClass(), "/mng-8041-resolution-scope"); + + Verifier verifier = newVerifier(testDir.getAbsolutePath()); + verifier.addCliArgument("install"); + verifier.execute(); + verifier.verifyErrorFreeLog(); + + List lines = verifier.loadFile(verifier.getBasedir(), verifier.getLogFileName(), false); + assertEquals( + 2l, + lines.stream() + .filter(l -> l.contains("aopalliance:aopalliance:jar:1.0")) + .count()); + } +} diff --git a/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java b/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java index c9cca4cf5..597186682 100644 --- a/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java +++ b/core-it-suite/src/test/java/org/apache/maven/it/TestSuiteOrdering.java @@ -120,6 +120,7 @@ public TestSuiteOrdering() { * the tests are to finishing. Newer tests are also more likely to fail, so this is * a fail fast technique as well. */ + suite.addTestSuite(MavenITmng8041DependencyResolutionScope.class); suite.addTestSuite(MavenITmng7982DependencyManagementTransitivityTest.class); suite.addTestSuite(MavenITmng8294ParentChecksTest.class); suite.addTestSuite(MavenITmng8293BomImportFromReactor.class); diff --git a/core-it-suite/src/test/resources-filtered/bootstrap.txt b/core-it-suite/src/test/resources-filtered/bootstrap.txt index b2542cf9a..7c3b4838f 100644 --- a/core-it-suite/src/test/resources-filtered/bootstrap.txt +++ b/core-it-suite/src/test/resources-filtered/bootstrap.txt @@ -111,6 +111,7 @@ org.apache.maven.plugins:maven-plugin-plugin:3.2 org.apache.maven.plugins:maven-plugin-plugin:3.3 org.apache.maven.plugins:maven-plugin-plugin:3.6.0 org.apache.maven.plugins:maven-plugin-plugin:3.9.0 +org.apache.maven.plugins:maven-plugin-plugin:4.0.0-beta-1 org.apache.maven.plugins:maven-rar-plugin:${stubPluginVersion} org.apache.maven.plugins:maven-release-plugin:3.0.0-M5 org.apache.maven.plugins:maven-remote-resources-plugin:1.7.0 diff --git a/core-it-suite/src/test/resources/mng-8041-resolution-scope/downstream/pom.xml b/core-it-suite/src/test/resources/mng-8041-resolution-scope/downstream/pom.xml new file mode 100644 index 000000000..bcee8c280 --- /dev/null +++ b/core-it-suite/src/test/resources/mng-8041-resolution-scope/downstream/pom.xml @@ -0,0 +1,28 @@ + + + + mng-8041-downstream + + + + org.apache.maven.its + mng-8041-upstream + + + + + + + org.apache.maven.its + mng-8041-plugin + + + + static-tree + + + + + + + diff --git a/core-it-suite/src/test/resources/mng-8041-resolution-scope/plugin/pom.xml b/core-it-suite/src/test/resources/mng-8041-resolution-scope/plugin/pom.xml new file mode 100644 index 000000000..abc50abd2 --- /dev/null +++ b/core-it-suite/src/test/resources/mng-8041-resolution-scope/plugin/pom.xml @@ -0,0 +1,29 @@ + + + + + mng-8041-plugin + maven-plugin + + + + org.apache.maven + maven-api-core + 4.0.0-beta-5-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-plugin-plugin + 4.0.0-beta-1 + + test + + + + + + diff --git a/core-it-suite/src/test/resources/mng-8041-resolution-scope/plugin/src/main/java/org/apache/maven/its/mng8041/TestMojo.java b/core-it-suite/src/test/resources/mng-8041-resolution-scope/plugin/src/main/java/org/apache/maven/its/mng8041/TestMojo.java new file mode 100644 index 000000000..f74c44c1c --- /dev/null +++ b/core-it-suite/src/test/resources/mng-8041-resolution-scope/plugin/src/main/java/org/apache/maven/its/mng8041/TestMojo.java @@ -0,0 +1,47 @@ +/* + * 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.its.mng8041; + +import org.apache.maven.api.Node; +import org.apache.maven.api.PathScope; +import org.apache.maven.api.Project; +import org.apache.maven.api.Session; +import org.apache.maven.api.di.Inject; +import org.apache.maven.api.plugin.annotations.Mojo; + +@Mojo(name = "static-tree", defaultPhase = "validate") +public class TestMojo implements org.apache.maven.api.plugin.Mojo { + + @Inject + Project project; + + @Inject + Session session; + + @Override + public void execute() { + Node node = session.collectDependencies(project, PathScope.MAIN_RUNTIME); + display(node, ""); + } + + private void display(Node node, String prefix) { + System.out.println(prefix + node); + node.getChildren().forEach(c -> display(c, prefix + " ")); + } +} diff --git a/core-it-suite/src/test/resources/mng-8041-resolution-scope/pom.xml b/core-it-suite/src/test/resources/mng-8041-resolution-scope/pom.xml new file mode 100644 index 000000000..50f087504 --- /dev/null +++ b/core-it-suite/src/test/resources/mng-8041-resolution-scope/pom.xml @@ -0,0 +1,7 @@ + + + org.apache.maven.its + mng-8041 + 1.0-SNAPSHOT + pom + diff --git a/core-it-suite/src/test/resources/mng-8041-resolution-scope/upstream/pom.xml b/core-it-suite/src/test/resources/mng-8041-resolution-scope/upstream/pom.xml new file mode 100644 index 000000000..48387b48a --- /dev/null +++ b/core-it-suite/src/test/resources/mng-8041-resolution-scope/upstream/pom.xml @@ -0,0 +1,41 @@ + + + + mng-8041-upstream + + + + aopalliance + aopalliance + 1.0 + provided + + + com.google.inject + guice + 6.0.0 + + + com.google.guava + guava + 31.0.1-jre + test + + + + + + + org.apache.maven.its + mng-8041-plugin + + + + static-tree + + + + + + +