diff --git a/provisio-maven-plugin/src/main/java/ca/vanzyl/maven/plugins/provisio/BaseMojo.java b/provisio-maven-plugin/src/main/java/ca/vanzyl/maven/plugins/provisio/BaseMojo.java
index e441151..db048d6 100644
--- a/provisio-maven-plugin/src/main/java/ca/vanzyl/maven/plugins/provisio/BaseMojo.java
+++ b/provisio-maven-plugin/src/main/java/ca/vanzyl/maven/plugins/provisio/BaseMojo.java
@@ -26,17 +26,11 @@
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
-import org.apache.maven.project.artifact.ProjectArtifact;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.ReaderFactory;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.artifact.Artifact;
@@ -44,7 +38,14 @@
import org.eclipse.aether.artifact.ArtifactType;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.artifact.DefaultArtifactType;
-import org.eclipse.aether.util.artifact.ArtifactIdUtils;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.graph.DefaultDependencyNode;
+import org.eclipse.aether.graph.DependencyFilter;
+import org.eclipse.aether.resolution.ArtifactResult;
+import org.eclipse.aether.resolution.DependencyRequest;
+import org.eclipse.aether.resolution.DependencyResolutionException;
+import org.eclipse.aether.resolution.DependencyResult;
+import org.eclipse.aether.util.filter.ScopeDependencyFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -96,13 +97,12 @@ protected ProvisioArtifact projectArtifact() {
// is no real protocol for knowing what something like, say, the JAR plugin did to drop off a file somewhere. We
// need to improve this but for now we'll look.
// ===
- // This above is not quite true: check below reuses main artifact if it was built (backing file exists) unrelated
- // where it was created, but have been attached.
+ // While this above is still true, this check below is better, in a sense it allows JAR plugin to drop off file
+ // anywhere.
//
- Artifact pomArtifact = RepositoryUtils.toArtifact(new ProjectArtifact(project));
Artifact projectArtifact = RepositoryUtils.toArtifact(project.getArtifact());
- if (!ArtifactIdUtils.equalsId(pomArtifact, projectArtifact)
- && projectArtifact.getFile() != null
+ if (projectArtifact.getFile() != null
+ && projectArtifact.getFile().getName().endsWith(".jar")
&& projectArtifact.getFile().exists()) {
jarArtifact = new ProvisioArtifact(project.getGroupId() + ":" + project.getArtifactId() + ":" + project.getVersion());
jarArtifact.setFile(projectArtifact.getFile());
@@ -122,14 +122,44 @@ protected ArtifactSet getRuntimeClasspathAsArtifactSet() {
// for this Mojo. I think this will be sufficient for anything related to creating a runtime.
//
ArtifactSet artifactSet = new ArtifactSet();
- for (org.apache.maven.artifact.Artifact mavenArtifact : project.getArtifacts()) {
- if (!mavenArtifact.getScope().equals("system") && !mavenArtifact.getScope().equals("provided")) {
- artifactSet.addArtifact(new ProvisioArtifact(toArtifact(mavenArtifact)));
- }
+ for (Artifact mavenArtifact : resolveRuntimeScopeTransitively()) {
+ artifactSet.addArtifact(new ProvisioArtifact(mavenArtifact));
}
return artifactSet;
}
+
+ /**
+ * This method is in use instead of project offering mojo asked resolution scope due presence of:
+ * MNG-8041
+ */
+ private List resolveRuntimeScopeTransitively() {
+ DependencyFilter scoopeDependencyFilter = new ScopeDependencyFilter("provided", "test");
+ List dependencies = project.getDependencies().stream()
+ .map(d -> RepositoryUtils.toDependency(d, repositorySystemSession.getArtifactTypeRegistry()))
+ .filter(d -> scoopeDependencyFilter.accept(new DefaultDependencyNode(d), Collections.emptyList()))
+ .collect(Collectors.toList());
+ List managedDependencies = Collections.emptyList();
+ if (project.getDependencyManagement() != null) {
+ managedDependencies = project.getDependencyManagement().getDependencies().stream()
+ .map(d -> RepositoryUtils.toDependency(d, repositorySystemSession.getArtifactTypeRegistry()))
+ .collect(Collectors.toList());
+ }
+
+ CollectRequest collectRequest = new CollectRequest();
+ collectRequest.setManagedDependencies(managedDependencies);
+ collectRequest.setRepositories(project.getRemoteProjectRepositories());
+ collectRequest.setDependencies(dependencies);
+ collectRequest.setRootArtifact(RepositoryUtils.toArtifact(project.getArtifact()));
+ DependencyRequest request = new DependencyRequest(collectRequest, scoopeDependencyFilter);
+ try {
+ DependencyResult dependencyResult = repositorySystem.resolveDependencies(repositorySystemSession, request);
+ return dependencyResult.getArtifactResults().stream().map(ArtifactResult::getArtifact).collect(Collectors.toList());
+ } catch (DependencyResolutionException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
private static Artifact toArtifact(org.apache.maven.artifact.Artifact artifact) {
if (artifact == null) {
return null;
diff --git a/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/GeneratorIntegrationTest.java b/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/GeneratorIntegrationTest.java
index 0a8a01b..a151e54 100644
--- a/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/GeneratorIntegrationTest.java
+++ b/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/GeneratorIntegrationTest.java
@@ -41,7 +41,7 @@
import static org.junit.Assert.assertArrayEquals;
@RunWith(MavenJUnitTestRunner.class)
-@MavenVersions({"3.6.3", "3.8.4"})
+@MavenVersions({"3.6.3", "3.8.8", "3.9.6"})
@SuppressWarnings({"JUnitTestNG", "PublicField"})
public class GeneratorIntegrationTest
{
diff --git a/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/ProvisioningIntegrationTest.java b/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/ProvisioningIntegrationTest.java
index 5ada744..7091152 100644
--- a/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/ProvisioningIntegrationTest.java
+++ b/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/ProvisioningIntegrationTest.java
@@ -29,7 +29,7 @@
import static org.junit.Assert.assertTrue;
@RunWith(MavenJUnitTestRunner.class)
-@MavenVersions({"3.6.3", "3.8.4", "3.9.6"})
+@MavenVersions({"3.6.3", "3.8.8", "3.9.6"})
@SuppressWarnings({"JUnitTestNG", "PublicField"})
public class ProvisioningIntegrationTest
{
diff --git a/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/ValidatorIntegrationTest.java b/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/ValidatorIntegrationTest.java
index 399d946..003da68 100644
--- a/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/ValidatorIntegrationTest.java
+++ b/provisio-maven-plugin/src/test/java/ca/vanzyl/maven/plugins/provisio/ValidatorIntegrationTest.java
@@ -27,7 +27,7 @@
import java.io.File;
@RunWith(MavenJUnitTestRunner.class)
-@MavenVersions({"3.6.3", "3.8.4"})
+@MavenVersions({"3.6.3", "3.8.8", "3.9.6"})
@SuppressWarnings({"JUnitTestNG", "PublicField"})
public class ValidatorIntegrationTest
{