diff --git a/src/it/it-use-releases-issue-583/invoker.properties b/src/it/it-use-releases-issue-583/invoker.properties
new file mode 100644
index 000000000..8e97d76cf
--- /dev/null
+++ b/src/it/it-use-releases-issue-583/invoker.properties
@@ -0,0 +1 @@
+invoker.goals=${project.groupId}:${project.artifactId}:${project.version}:use-releases -DallowRangeMatching=true -DfailIfNotReplaced=true
diff --git a/src/it/it-use-releases-issue-583/pom.xml b/src/it/it-use-releases-issue-583/pom.xml
new file mode 100644
index 000000000..ce037a5fa
--- /dev/null
+++ b/src/it/it-use-releases-issue-583/pom.xml
@@ -0,0 +1,21 @@
+
+ 4.0.0
+
+ localhost
+ it-use-releases-issue-583
+ 1.0
+ pom
+ Skip a dependency without version
+
+
+
+
+ localhost
+ dummy-api
+ provided
+
+
+
+
+
diff --git a/src/it/it-use-releases-issue-583/verify.bsh b/src/it/it-use-releases-issue-583/verify.bsh
new file mode 100644
index 000000000..73a06b17a
--- /dev/null
+++ b/src/it/it-use-releases-issue-583/verify.bsh
@@ -0,0 +1,23 @@
+import java.io.*;
+import org.codehaus.plexus.util.FileUtils;
+import java.util.regex.*;
+
+try
+{
+ File file = new File( basedir, "build.log" );
+ String buf = FileUtils.fileRead( file );
+ Pattern p = Pattern.compile( "\\QIgnoring dependency with no version: localhost:dummy-api:jar\\E" );
+ Matcher m = p.matcher( buf.toString() );
+ if ( !m.find() )
+ {
+ System.out.println( "cannot find skipping of dummy-api dependency" );
+ return false;
+ }
+}
+catch( Throwable t )
+{
+ t.printStackTrace();
+ return false;
+}
+
+return true;
diff --git a/src/main/java/org/codehaus/mojo/versions/AbstractVersionsDependencyUpdaterMojo.java b/src/main/java/org/codehaus/mojo/versions/AbstractVersionsDependencyUpdaterMojo.java
index 3114a07e0..8decb6881 100644
--- a/src/main/java/org/codehaus/mojo/versions/AbstractVersionsDependencyUpdaterMojo.java
+++ b/src/main/java/org/codehaus/mojo/versions/AbstractVersionsDependencyUpdaterMojo.java
@@ -188,10 +188,11 @@ public boolean isExcludeReactor()
* @return true if the version starts with '${'
* @since 2.8
*/
- protected boolean isHandledByProperty(Dependency dependency) {
- String version = dependency.getVersion();
- return version.startsWith("${");
- }
+ protected boolean isHandledByProperty( Dependency dependency )
+ {
+ String version = dependency.getVersion();
+ return version != null && version.startsWith( "${" );
+ }
/**
* Try to find the dependency artifact that matches the given dependency.
diff --git a/src/main/java/org/codehaus/mojo/versions/UseReleasesMojo.java b/src/main/java/org/codehaus/mojo/versions/UseReleasesMojo.java
index 127bf7809..7fd4f6468 100644
--- a/src/main/java/org/codehaus/mojo/versions/UseReleasesMojo.java
+++ b/src/main/java/org/codehaus/mojo/versions/UseReleasesMojo.java
@@ -209,6 +209,11 @@ private void useReleases( ModifiedPomXMLEventReader pom, Collection
}
String version = dep.getVersion();
+ if ( version == null )
+ {
+ getLog().info( "Ignoring dependency with no version: " + toString( dep ) );
+ continue;
+ }
Matcher versionMatcher = matchSnapshotRegex.matcher( version );
if ( versionMatcher.matches() )
{