diff --git a/pom.xml b/pom.xml
index c15364da..f28375c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,7 +29,10 @@
flatten-maven-plugin
maven-plugin
Maven Flatten Plugin
- 1.2.0-SNAPSHOT
+
+ 1.1.0.2
Plugin to generate flattened POM (reduced and resolved information required for consumers of maven repositories) and to use (install, sign, deploy) it instead of original pom.xml.
2014
diff --git a/src/it/projects/complete-multimodule-parent-pom-cifriendly/pom.xml b/src/it/projects/complete-multimodule-parent-pom-cifriendly/pom.xml
index 23605513..75f7baf6 100644
--- a/src/it/projects/complete-multimodule-parent-pom-cifriendly/pom.xml
+++ b/src/it/projects/complete-multimodule-parent-pom-cifriendly/pom.xml
@@ -16,6 +16,8 @@
flatten-maven-plugin
resolveCiFriendliesOnly
+
@@ -100,6 +102,8 @@
1.2.3.0
value
+ foo
+ bar
@@ -114,4 +118,19 @@
http://mojo.codehaus.org
+
+
+ cifriendly-profile-bug
+
+ true
+
+
+
+ myrepo
+ myrepo
+ https://${repoHost}/${repoPath}
+
+
+
+
\ No newline at end of file
diff --git a/src/it/projects/complete-multimodule-parent-pom-cifriendly/verify.groovy b/src/it/projects/complete-multimodule-parent-pom-cifriendly/verify.groovy
index a3e5a1eb..21cda792 100644
--- a/src/it/projects/complete-multimodule-parent-pom-cifriendly/verify.groovy
+++ b/src/it/projects/complete-multimodule-parent-pom-cifriendly/verify.groovy
@@ -82,3 +82,6 @@ assert 'org.codehaus.mojo.flatten.its' == flattendChildWithParentProject.groupId
assert 'multimodule-module-with-parent-cifriendly' == flattendChildWithParentProject.artifactId.text()
assert '1.2.3.4' == flattendChildWithParentProject.version.text()
assert '1.2.3.4' == flattendChildWithParentProject.parent.version.text()
+
+// CiFriendly interpolation bug
+assert 'https://${repoHost}/${repoPath}' == flattendProject.profiles.profile[0].repositories.repository[0].url.text()
diff --git a/src/main/java/org/codehaus/mojo/flatten/ElementHandling.java b/src/main/java/org/codehaus/mojo/flatten/ElementHandling.java
index be14b463..7933b6e4 100644
--- a/src/main/java/org/codehaus/mojo/flatten/ElementHandling.java
+++ b/src/main/java/org/codehaus/mojo/flatten/ElementHandling.java
@@ -47,6 +47,9 @@ public enum ElementHandling
keep,
/** Remove the element entirely so it will not be present in flattened POM. */
- remove
+ remove,
+
+ /** Take the element untouched from the original POM. Fix for {@link #keep} */
+ keepRaw
}
diff --git a/src/main/java/org/codehaus/mojo/flatten/FlattenDescriptor.java b/src/main/java/org/codehaus/mojo/flatten/FlattenDescriptor.java
index faa8326e..f1860f74 100644
--- a/src/main/java/org/codehaus/mojo/flatten/FlattenDescriptor.java
+++ b/src/main/java/org/codehaus/mojo/flatten/FlattenDescriptor.java
@@ -316,6 +316,22 @@ public void setIssueManagement( ElementHandling issueManagement )
setHandling( PomProperty.ISSUE_MANAGEMENT, issueManagement );
}
+ /**
+ * @return {@link ElementHandling} for {@link Model#getLicenses() licenses}.
+ */
+ public ElementHandling getLicenses()
+ {
+ return getHandling( PomProperty.LICENSES );
+ }
+
+ /**
+ * @param licenses the {@link #getLicenses() licenses} to set.
+ */
+ public void setLicenses( ElementHandling licenses )
+ {
+ setHandling( PomProperty.LICENSES, licenses );
+ }
+
/**
* @return {@link ElementHandling} for {@link Model#getCiManagement() ciManagement}.
*/
diff --git a/src/main/java/org/codehaus/mojo/flatten/FlattenMode.java b/src/main/java/org/codehaus/mojo/flatten/FlattenMode.java
index 12750982..e8719359 100644
--- a/src/main/java/org/codehaus/mojo/flatten/FlattenMode.java
+++ b/src/main/java/org/codehaus/mojo/flatten/FlattenMode.java
@@ -77,8 +77,12 @@ public enum FlattenMode
/** Only resolves variables revision, sha1 and changelist. Keeps everything else.
* See Maven CI Friendly for further details.
*/
- resolveCiFriendliesOnly;
+ resolveCiFriendliesOnly,
+ /**
+ * Fix for {@link #resolveCiFriendliesOnly}
+ */
+ version;
/**
* @return the {@link FlattenDescriptor} defined by this {@link FlattenMode}.
@@ -147,6 +151,34 @@ public FlattenDescriptor getDescriptor()
descriptor.setUrl( ElementHandling.interpolate );
descriptor.setVersion( ElementHandling.resolve );
break;
+ case version:
+ descriptor.setBuild(ElementHandling.keepRaw);
+ descriptor.setCiManagement(ElementHandling.keepRaw);
+ descriptor.setContributors(ElementHandling.keepRaw);
+ descriptor.setDependencies(ElementHandling.keepRaw);
+ descriptor.setDependencyManagement(ElementHandling.keepRaw);
+ descriptor.setDescription(ElementHandling.keepRaw);
+ descriptor.setDevelopers(ElementHandling.keepRaw);
+ descriptor.setDistributionManagement(ElementHandling.keepRaw);
+ descriptor.setInceptionYear(ElementHandling.keepRaw);
+ descriptor.setIssueManagement(ElementHandling.keepRaw);
+ descriptor.setLicenses(ElementHandling.keepRaw);
+ descriptor.setMailingLists(ElementHandling.keepRaw);
+ descriptor.setModules(ElementHandling.keepRaw);
+ descriptor.setName(ElementHandling.keepRaw);
+ descriptor.setOrganization(ElementHandling.keepRaw);
+ descriptor.setParent(ElementHandling.resolve);
+ descriptor.setPluginManagement(ElementHandling.keepRaw);
+ descriptor.setPluginRepositories(ElementHandling.keepRaw);
+ descriptor.setPrerequisites(ElementHandling.keepRaw);
+ descriptor.setProfiles(ElementHandling.keepRaw);
+ descriptor.setProperties(ElementHandling.keepRaw);
+ descriptor.setReporting(ElementHandling.keepRaw);
+ descriptor.setRepositories(ElementHandling.keepRaw);
+ descriptor.setScm(ElementHandling.keepRaw);
+ descriptor.setUrl(ElementHandling.keepRaw);
+ descriptor.setVersion(ElementHandling.resolve);
+ break;
case clean:
// nothing to do...
break;
diff --git a/src/main/java/org/codehaus/mojo/flatten/FlattenMojo.java b/src/main/java/org/codehaus/mojo/flatten/FlattenMojo.java
index eeb669b6..60576972 100644
--- a/src/main/java/org/codehaus/mojo/flatten/FlattenMojo.java
+++ b/src/main/java/org/codehaus/mojo/flatten/FlattenMojo.java
@@ -38,6 +38,7 @@
import org.apache.maven.model.building.ModelBuildingResult;
import org.apache.maven.model.building.ModelProblemCollector;
import org.apache.maven.model.interpolation.ModelInterpolator;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
import org.apache.maven.model.profile.ProfileActivationContext;
import org.apache.maven.model.profile.ProfileInjector;
@@ -57,6 +58,7 @@
import org.codehaus.plexus.util.IOUtil;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.ext.DefaultHandler2;
@@ -65,6 +67,7 @@
import javax.xml.parsers.SAXParserFactory;
import java.io.File;
import java.io.FileOutputStream;
+import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
@@ -486,6 +489,7 @@ protected Model createFlattenedPom( File pomFile )
Model originalPom = this.project.getOriginalModel();
Model resolvedPom = this.project.getModel();
Model interpolatedPom = createResolvedPom( buildingRequest );
+ Model rawPom = getRawPom(pomFile);
// copy the configured additional POM elements...
@@ -494,7 +498,7 @@ protected Model createFlattenedPom( File pomFile )
if ( property.isElement() )
{
Model sourceModel = getSourceModel( descriptor, property, effectivePom, originalPom, resolvedPom,
- interpolatedPom, cleanPom );
+ interpolatedPom, cleanPom, rawPom );
if ( sourceModel == null )
{
if ( property.isRequired() )
@@ -513,6 +517,20 @@ protected Model createFlattenedPom( File pomFile )
return flattenedPom;
}
+ private Model getRawPom(File pomFile) throws MojoExecutionException
+ {
+ MavenXpp3Reader reader = new MavenXpp3Reader();
+ Model rawPom = null;
+ try
+ {
+ rawPom = reader.read(new FileReader(pomFile));
+ }
+ catch(IOException | XmlPullParserException e) {
+ throw new MojoExecutionException("Error reading raw model.", e);
+ }
+ return rawPom;
+ }
+
private Model createResolvedPom( ModelBuildingRequest buildingRequest )
{
LoggingModelProblemCollector problems = new LoggingModelProblemCollector( getLog() );
@@ -593,7 +611,8 @@ protected Model createCleanPom( Model effectivePom )
}
private Model getSourceModel( FlattenDescriptor descriptor, PomProperty> property, Model effectivePom,
- Model originalPom, Model resolvedPom, Model interpolatedPom, Model cleanPom )
+ Model originalPom, Model resolvedPom, Model interpolatedPom, Model cleanPom,
+ Model rawPom )
{
ElementHandling handling = descriptor.getHandling( property );
@@ -613,6 +632,8 @@ private Model getSourceModel( FlattenDescriptor descriptor, PomProperty> prope
return cleanPom;
case remove:
return null;
+ case keepRaw:
+ return rawPom;
default:
throw new IllegalStateException( handling.toString() );
}