diff --git a/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/AddOSGiParamToNbmPluginConfiguration.java b/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/AddOSGiParamToNbmPluginConfiguration.java
index c3a69ad..8d4a8df 100644
--- a/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/AddOSGiParamToNbmPluginConfiguration.java
+++ b/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/AddOSGiParamToNbmPluginConfiguration.java
@@ -56,14 +56,14 @@
             //check plugin management first.
             PluginManagement pm = bld.getPluginManagement();
             if (pm != null) {
-                plg = PluginBackwardPropertyUtils.findPluginFromPluginManagement(pm);                
+                plg = PluginBackwardPropertyUtils.findPluginFromPluginManagement(pm);
             }
             if (plg == null) { // should not happen to begin with
                 plg = model.getFactory().createPlugin();
                 bld.addPlugin(plg);
                 plg.setGroupId(MavenNbModuleImpl.GROUPID_APACHE);
                 plg.setArtifactId(MavenNbModuleImpl.NBM_PLUGIN);
-                plg.setVersion(MavenNbModuleImpl.LATEST_NBM_PLUGIN_VERSION);
+                plg.setVersion(MavenNbModuleImpl.getLatestNbmPluginVersion());
             }
         }
         Configuration cnf = plg.getConfiguration();
diff --git a/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/MavenNbModuleImpl.java b/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/MavenNbModuleImpl.java
index 4203df1..daf3923 100644
--- a/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/MavenNbModuleImpl.java
+++ b/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/MavenNbModuleImpl.java
@@ -80,6 +80,9 @@
 import org.openide.modules.SpecificationVersion;
 import org.openide.util.RequestProcessor;
 
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
 /**
  *
  * @author mkleint
@@ -107,10 +110,11 @@
     public static final String GROUPID_MOJO = "org.codehaus.mojo";
     public static final String GROUPID_APACHE = "org.apache.netbeans.utilities";
     public static final String NBM_PLUGIN = "nbm-maven-plugin";
-    public static final String LATEST_NBM_PLUGIN_VERSION = "4.3";
-    
-    public static final String NETBEANSAPI_GROUPID = "org.netbeans.api";  
-    
+    private static final String LATEST_NBM_PLUGIN_VERSION = "4.3";
+
+    public static final String NETBEANSAPI_GROUPID = "org.netbeans.api";
+
+    private static final Logger LOG = Logger.getLogger("org.netbeans.modules.maven.apisupport.MavenNbModuleImpl");
 
     /** Creates a new instance of MavenNbModuleImpl 
      * @param project 
@@ -123,7 +127,28 @@
         return Arrays.asList(
                 RepositoryPreferences.getInstance().getRepositoryInfoById(MAVEN_CENTRAL));
     }
-    
+
+    public static String getLatestNbmPluginVersion() {
+        try {
+            RepositoryQueries.Result<NBVersionInfo> versionsResult = RepositoryQueries.getVersionsResult(GROUPID_APACHE, NBM_PLUGIN, null);
+
+            if (versionsResult.isPartial()) {
+                versionsResult.waitForSkipped();
+            }
+
+            // Versions are sorted in descending order
+            List<NBVersionInfo> results = versionsResult.getResults();
+            if (!results.isEmpty()) {
+                return results.get(0).getVersion();
+            }
+        }
+        catch (NullPointerException ex) {
+            // This exceptions occurs during unit tests so default to LATEST_NBM_PLUGIN_VERSION
+            LOG.log(Level.WARNING, "Unable to get latest nbm-maven-plugin version number");
+        }
+        return LATEST_NBM_PLUGIN_VERSION;
+    }
+
     private File getModuleXmlLocation() {
         String file = PluginBackwardPropertyUtils.getPluginProperty(project, 
                     "descriptor", null, null); //NOI18N
diff --git a/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/NBMNativeMWI.java b/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/NBMNativeMWI.java
index c3d0ac7..b1f38ce 100644
--- a/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/NBMNativeMWI.java
+++ b/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/NBMNativeMWI.java
@@ -247,7 +247,7 @@
                 //nbm-maven-plugin
                 boolean addPlugin = true;
                 String managedPVersion = null;
-                String pVersion = MavenNbModuleImpl.LATEST_NBM_PLUGIN_VERSION;
+                String pVersion = MavenNbModuleImpl.getLatestNbmPluginVersion();
 //                boolean useOsgiDepsSet = false;
                 if (parent != null) {
                     //TODO do we want to support the case when the plugin is defined in parent pom with inherited=true?
diff --git a/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/NetBeansRunParamsIDEChecker.java b/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/NetBeansRunParamsIDEChecker.java
index c764ea7..d0e45ef 100644
--- a/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/NetBeansRunParamsIDEChecker.java
+++ b/apisupport/maven.apisupport/src/org/netbeans/modules/maven/apisupport/NetBeansRunParamsIDEChecker.java
@@ -123,7 +123,7 @@
                     plg.setExtensions(Boolean.TRUE);
                     bld.addPlugin(plg);
                 }
-                plg.setVersion(MavenNbModuleImpl.LATEST_NBM_PLUGIN_VERSION); //
+                plg.setVersion(MavenNbModuleImpl.getLatestNbmPluginVersion()); //
             }
         };
     }
diff --git a/apisupport/maven.apisupport/test/unit/src/org/netbeans/modules/maven/apisupport/NBMNativeMWITest.java b/apisupport/maven.apisupport/test/unit/src/org/netbeans/modules/maven/apisupport/NBMNativeMWITest.java
index ebf12c2..e2f1991 100644
--- a/apisupport/maven.apisupport/test/unit/src/org/netbeans/modules/maven/apisupport/NBMNativeMWITest.java
+++ b/apisupport/maven.apisupport/test/unit/src/org/netbeans/modules/maven/apisupport/NBMNativeMWITest.java
@@ -58,7 +58,7 @@
         Model model = reader.read(new FileReader(FileUtil.toFile(builtpom)));
 
         assertEquals("nbm-maven-plugin", model.getBuild().getPlugins().get(0).getArtifactId());
-        assertEquals(MavenNbModuleImpl.LATEST_NBM_PLUGIN_VERSION, model.getBuild().getPlugins().get(0).getVersion());
+        assertEquals(MavenNbModuleImpl.getLatestNbmPluginVersion(), model.getBuild().getPlugins().get(0).getVersion());
         assertEquals("maven-compiler-plugin", model.getBuild().getPlugins().get(1).getArtifactId());
         assertEquals("3.8.1", model.getBuild().getPlugins().get(1).getVersion());
         assertEquals(0, model.getRepositories().size());
@@ -76,7 +76,7 @@
         MavenXpp3Reader reader = new MavenXpp3Reader();
         Model model = reader.read(new FileReader(FileUtil.toFile(builtpom)));
         assertEquals("nbm-maven-plugin", model.getBuild().getPlugins().get(0).getArtifactId());
-        assertEquals(MavenNbModuleImpl.LATEST_NBM_PLUGIN_VERSION, model.getBuild().getPlugins().get(0).getVersion());
+        assertEquals(MavenNbModuleImpl.getLatestNbmPluginVersion(), model.getBuild().getPlugins().get(0).getVersion());
         assertEquals("maven-compiler-plugin", model.getBuild().getPlugins().get(1).getArtifactId());
         assertEquals("3.8.1", model.getBuild().getPlugins().get(1).getVersion());
         assertEquals(1, model.getRepositories().size());
@@ -103,7 +103,7 @@
         Model model = reader.read(new FileReader(FileUtil.toFile(builtpom)));
 
         assertEquals("nbm-maven-plugin", model.getBuild().getPlugins().get(0).getArtifactId());
-        assertEquals(MavenNbModuleImpl.LATEST_NBM_PLUGIN_VERSION, model.getBuild().getPlugins().get(0).getVersion());
+        assertEquals(MavenNbModuleImpl.getLatestNbmPluginVersion(), model.getBuild().getPlugins().get(0).getVersion());
         assertEquals("maven-compiler-plugin", model.getBuild().getPlugins().get(1).getArtifactId());
         assertEquals("3.8.1", model.getBuild().getPlugins().get(1).getVersion());
         assertEquals(0, model.getRepositories().size());
@@ -129,7 +129,7 @@
         Model model = reader.read(new FileReader(FileUtil.toFile(builtpom)));
 
         assertEquals("nbm-maven-plugin", model.getBuild().getPlugins().get(0).getArtifactId());
-        assertEquals(MavenNbModuleImpl.LATEST_NBM_PLUGIN_VERSION, model.getBuild().getPlugins().get(0).getVersion());
+        assertEquals(MavenNbModuleImpl.getLatestNbmPluginVersion(), model.getBuild().getPlugins().get(0).getVersion());
         assertEquals("maven-compiler-plugin", model.getBuild().getPlugins().get(1).getArtifactId());
         assertEquals("3.8.1", model.getBuild().getPlugins().get(1).getVersion());
         assertEquals(1, model.getRepositories().size());
@@ -157,7 +157,7 @@
         Model modeloutput = readeroutput.read(new FileReader(FileUtil.toFile(builtpom)));
 
         assertEquals("nbm-maven-plugin", modeloutput.getBuild().getPlugins().get(0).getArtifactId());
-        assertEquals(MavenNbModuleImpl.LATEST_NBM_PLUGIN_VERSION, modeloutput.getBuild().getPlugins().get(0).getVersion());
+        assertEquals(MavenNbModuleImpl.getLatestNbmPluginVersion(), modeloutput.getBuild().getPlugins().get(0).getVersion());
         assertEquals("maven-compiler-plugin", modeloutput.getBuild().getPlugins().get(1).getArtifactId());
         assertEquals(null, modeloutput.getBuild().getPlugins().get(1).getVersion());
         assertEquals(0, model.getRepositories().size());
@@ -184,7 +184,7 @@
         Model modeloutput = readeroutput.read(new FileReader(FileUtil.toFile(builtpom)));
 
         assertEquals("nbm-maven-plugin", modeloutput.getBuild().getPlugins().get(0).getArtifactId());
-        assertEquals(MavenNbModuleImpl.LATEST_NBM_PLUGIN_VERSION, modeloutput.getBuild().getPlugins().get(0).getVersion());
+        assertEquals(MavenNbModuleImpl.getLatestNbmPluginVersion(), modeloutput.getBuild().getPlugins().get(0).getVersion());
         assertEquals("maven-compiler-plugin", modeloutput.getBuild().getPlugins().get(1).getArtifactId());
         assertEquals("3.8.1", modeloutput.getBuild().getPlugins().get(1).getVersion());
         assertEquals(0, model.getRepositories().size());
