diff --git a/guvnor-m2repo-editor/guvnor-m2repo-editor-backend/pom.xml b/guvnor-m2repo-editor/guvnor-m2repo-editor-backend/pom.xml
index 966a8304f6..03325240bf 100644
--- a/guvnor-m2repo-editor/guvnor-m2repo-editor-backend/pom.xml
+++ b/guvnor-m2repo-editor/guvnor-m2repo-editor-backend/pom.xml
@@ -65,7 +65,10 @@
org.slf4j
slf4j-api
-
+
+ org.apache.maven
+ maven-core
+
org.guvnor
diff --git a/guvnor-m2repo-editor/guvnor-m2repo-editor-backend/src/main/java/org/guvnor/m2repo/backend/server/GuvnorM2Repository.java b/guvnor-m2repo-editor/guvnor-m2repo-editor-backend/src/main/java/org/guvnor/m2repo/backend/server/GuvnorM2Repository.java
index f8c869161b..f83eea21da 100644
--- a/guvnor-m2repo-editor/guvnor-m2repo-editor-backend/src/main/java/org/guvnor/m2repo/backend/server/GuvnorM2Repository.java
+++ b/guvnor-m2repo-editor/guvnor-m2repo-editor-backend/src/main/java/org/guvnor/m2repo/backend/server/GuvnorM2Repository.java
@@ -16,6 +16,7 @@
package org.guvnor.m2repo.backend.server;
+import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -26,6 +27,7 @@
import java.io.StringReader;
import java.io.StringWriter;
import java.net.MalformedURLException;
+import java.nio.charset.Charset;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Properties;
@@ -45,12 +47,11 @@
import org.apache.maven.model.DeploymentRepository;
import org.apache.maven.model.DistributionManagement;
import org.apache.maven.model.Model;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+import org.apache.maven.project.MavenProject;
import org.apache.maven.settings.Server;
import org.apache.maven.settings.Settings;
import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.drools.core.io.impl.ReaderInputStream;
import org.eclipse.aether.artifact.Artifact;
import org.eclipse.aether.artifact.DefaultArtifact;
@@ -64,6 +65,7 @@
import org.eclipse.aether.util.repository.AuthenticationBuilder;
import org.guvnor.common.services.project.model.GAV;
import org.kie.scanner.Aether;
+import org.kie.scanner.embedder.MavenProjectLoader;
import org.kie.scanner.embedder.MavenSettings;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -327,8 +329,7 @@ private void deployArtifact( final GAV gav,
//Deploy into remote repository defined in
try {
- final Model model = new MavenXpp3Reader().read( new StringReader( pomXML ) );
- final DistributionManagement distributionManagement = model.getDistributionManagement();
+ DistributionManagement distributionManagement = getDistributionManagement( pomXML );
if ( distributionManagement != null ) {
@@ -362,10 +363,6 @@ private void deployArtifact( final GAV gav,
} catch ( DeploymentException e ) {
throw new RuntimeException( e );
- } catch ( XmlPullParserException xppe ) {
- throw new RuntimeException( xppe );
- } catch ( IOException ioe ) {
- throw new RuntimeException( ioe );
}
} finally {
@@ -377,6 +374,25 @@ private void deployArtifact( final GAV gav,
}
}
+ private DistributionManagement getDistributionManagement( final String pomXML ) {
+ final InputStream is = new ByteArrayInputStream( pomXML.getBytes( Charset.forName( "UTF-8" ) ) );
+ try {
+ //Get the effective POM as the DistributionManagement section may be in a parent POM
+ final MavenProject project = MavenProjectLoader.parseMavenPom( is );
+ final DistributionManagement distributionManagement = project.getDistributionManagement();
+
+ return distributionManagement;
+
+ } finally {
+ try {
+ is.close();
+ } catch ( IOException ioe ) {
+ //Swallow
+ }
+ }
+
+ }
+
private RemoteRepository getGuvnorM2Repository() {
File m2RepoDir = new File( M2_REPO_DIR );
if ( !m2RepoDir.exists() ) {