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;
     }
