SLING-4880 apply resolved dependencies to raw model instead of attaching effective model
add new optional parameter "allowUnresolvedPomDependencies" (default: false)
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1690902 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java b/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
index 766e434..769e525 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/AbstractSlingStartMojo.java
@@ -60,6 +60,13 @@
@Parameter(defaultValue="false")
protected boolean usePomDependencies;
+ /**
+ * If set to true, an exception is throws when "usePomDependencies" is set to true and some
+ * dependency version could not be resolved in the Maven POM.
+ */
+ @Parameter(defaultValue="false")
+ protected boolean allowUnresolvedPomDependencies;
+
protected File getTmpDir() {
return new File(this.project.getBuild().getDirectory(), "slingstart-tmp");
}
diff --git a/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java b/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
index d6eac24..331adf8 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/AttachSlingStartModel.java
@@ -49,7 +49,7 @@
model = ModelUtility.applyVariables(model, new PomVariableResolver(project));
}
if (usePomDependencies) {
- // TODO: implement applyDependencies
+ model = ModelUtility.applyArtifactVersions(model, new PomArtifactVersionResolver(project, allowUnresolvedPomDependencies));
}
// write the model
diff --git a/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java b/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
index 0e58a18..172e3ed 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/DependencyLifecycleParticipant.java
@@ -152,7 +152,8 @@
resolverOptions.variableResolver(new PomVariableResolver(info.project));
}
if (nodeBooleanValue(info.plugin, "usePomDependencies", false)) {
- resolverOptions.artifactVersionResolver(new PomArtifactVersionResolver(info.project));
+ resolverOptions.artifactVersionResolver(new PomArtifactVersionResolver(info.project,
+ nodeBooleanValue(info.plugin, "allowUnresolvedPomDependencies", false)));
}
// we have to create an effective model to add the dependencies
diff --git a/src/main/java/org/apache/sling/maven/slingstart/PomArtifactVersionResolver.java b/src/main/java/org/apache/sling/maven/slingstart/PomArtifactVersionResolver.java
index 3c0a6d5..8fa941f 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/PomArtifactVersionResolver.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/PomArtifactVersionResolver.java
@@ -33,12 +33,15 @@
public class PomArtifactVersionResolver implements ArtifactVersionResolver {
private final MavenProject project;
+ private final boolean allowUnresolvedPomDependencies;
/**
* @param project Maven project
+ * @param allowUnresolvedPomDependencies If true, no exception is thrown when resolving is not possible
*/
- public PomArtifactVersionResolver(MavenProject project) {
+ public PomArtifactVersionResolver(MavenProject project, boolean allowUnresolvedPomDependencies) {
this.project = project;
+ this.allowUnresolvedPomDependencies = allowUnresolvedPomDependencies;
}
@Override
@@ -53,7 +56,12 @@
return version;
}
}
- return null;
+ if (allowUnresolvedPomDependencies) {
+ return null;
+ }
+ else {
+ throw new IllegalArgumentException("Unable to resolve dependency: " + artifact.toMvnUrl());
+ }
}
private String findVersion(List<Dependency> dependencies, Artifact artifact) {
diff --git a/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java b/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
index 677398f..a5967af 100644
--- a/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
+++ b/src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java
@@ -108,7 +108,7 @@
options.variableResolver(new PomVariableResolver(project));
}
if (usePomDependencies) {
- options.artifactVersionResolver(new PomArtifactVersionResolver(project));
+ options.artifactVersionResolver(new PomArtifactVersionResolver(project, allowUnresolvedPomDependencies));
}
return options;
}