[ https://issues.apache.org/jira/browse/MRELEASE-798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16233679#comment-16233679 ]
ASF GitHub Bot commented on MRELEASE-798: ----------------------------------------- hboutemy closed pull request #4: [MRELEASE-798] Commit additional files with release plugin URL: https://github.com/apache/maven-release/pull/4 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/maven-release-manager/pom.xml b/maven-release-manager/pom.xml index bd209a31..eba20925 100644 --- a/maven-release-manager/pom.xml +++ b/maven-release-manager/pom.xml @@ -234,7 +234,7 @@ </execution> </executions> <configuration> - <version>2.3.0</version> + <version>2.3.1</version> <packageWithVersion>false</packageWithVersion> <useJava5>true</useJava5> <models> diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java index 32be254e..99cf4523 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/PropertiesReleaseDescriptorStore.java @@ -36,6 +36,7 @@ import org.apache.maven.shared.release.scm.IdentifiedScm; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.util.IOUtil; +import org.codehaus.plexus.util.StringUtils; import org.sonatype.plexus.components.cipher.DefaultPlexusCipher; import org.sonatype.plexus.components.cipher.PlexusCipherException; import org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher; @@ -135,6 +136,10 @@ public void write( ReleaseDescriptor config, File file ) { properties.setProperty( "commitByProject", "true" ); } + if ( config.getAdditionalCommittedIncludes() != null ) + { + properties.setProperty( "additionalCommittedIncludes", config.getAdditionalCommittedIncludes() ); + } properties.setProperty( "scm.url", config.getScmSourceUrl() ); if ( config.getScmId() != null ) { diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java index 3f705909..096e9ade 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/config/ReleaseUtils.java @@ -27,6 +27,7 @@ import java.util.Set; import org.apache.maven.shared.release.scm.IdentifiedScm; +import org.codehaus.plexus.util.StringUtils; /** * Class providing utility methods used during the release process @@ -120,6 +121,7 @@ public static ReleaseDescriptor merge( ReleaseDescriptor mergeInto, ReleaseDescr // Not overridden - not configured from caller mergeInto.setCompletedPhase( mergeDefault( mergeInto.getCompletedPhase(), toBeMerged.getCompletedPhase() ) ); + mergeInto.setAdditionalCommittedIncludes(mergeOverride(mergeInto.getAdditionalCommittedIncludes(), toBeMerged.getAdditionalCommittedIncludes())); return mergeInto; } @@ -169,6 +171,12 @@ public static ReleaseDescriptor copyPropertiesToReleaseDescriptor( Properties pr String pushChanges = properties.getProperty( "pushChanges" ); releaseDescriptor.setPushChanges( pushChanges == null ? true : Boolean.valueOf( pushChanges ).booleanValue() ); + String additionalCommitedIncludes = properties.getProperty( "additionalCommittedIncludes" ) ; + if ( StringUtils.isNotBlank(additionalCommitedIncludes) ) + { + releaseDescriptor.setAdditionalCommittedIncludes(additionalCommitedIncludes); + } + loadResolvedDependencies( properties, releaseDescriptor ); // boolean properties are not written to the properties file because the value from the caller is always used diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java index 65800aef..f79940b7 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractScmCommitPhase.java @@ -37,6 +37,7 @@ import org.apache.maven.shared.release.scm.ReleaseScmRepositoryException; import org.apache.maven.shared.release.scm.ScmRepositoryConfigurator; import org.apache.maven.shared.release.util.ReleaseUtil; +import org.codehaus.plexus.util.DirectoryScanner; import java.io.File; import java.text.MessageFormat; @@ -132,7 +133,11 @@ protected void performCheckins( ReleaseDescriptor releaseDescriptor, ReleaseEnvi for ( MavenProject project : reactorProjects ) { List<File> pomFiles = createPomFiles( releaseDescriptor, project ); - ScmFileSet fileSet = new ScmFileSet( project.getFile().getParentFile(), pomFiles ); + List<File> additionalFiles = createAdditionalFiles(releaseDescriptor, project) ; + List<File> files = new ArrayList<File>() ; + files.addAll(pomFiles); + files.addAll(additionalFiles) ; + ScmFileSet fileSet = new ScmFileSet( project.getFile().getParentFile(), files ); checkin( provider, repository, fileSet, releaseDescriptor, message ); } @@ -140,7 +145,11 @@ protected void performCheckins( ReleaseDescriptor releaseDescriptor, ReleaseEnvi else { List<File> pomFiles = createPomFiles( releaseDescriptor, reactorProjects ); - ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ), pomFiles ); + List<File> additionalFiles = createAdditionalFiles(releaseDescriptor, reactorProjects) ; + List<File> files = new ArrayList<File>() ; + files.addAll(pomFiles); + files.addAll(additionalFiles) ; + ScmFileSet fileSet = new ScmFileSet( new File( releaseDescriptor.getWorkingDirectory() ), files ); checkin( provider, repository, fileSet, releaseDescriptor, message ); } @@ -174,7 +183,11 @@ protected void simulateCheckins( ReleaseDescriptor releaseDescriptor, List<Maven String message ) { Collection<File> pomFiles = createPomFiles( releaseDescriptor, reactorProjects ); - logInfo( result, "Full run would be commit " + pomFiles.size() + " files with message: '" + message + "'" ); + Collection<File> additionalFiles = createAdditionalFiles(releaseDescriptor, reactorProjects) ; + Collection<File> files = new ArrayList<File>() ; + files.addAll(pomFiles) ; + files.addAll(additionalFiles) ; + logInfo( result, "Full run would be commit " + files.size() + " files with message: '" + message + "'" ); } protected void validateConfiguration( ReleaseDescriptor releaseDescriptor ) @@ -215,4 +228,43 @@ protected String createMessage( ReleaseDescriptor releaseDescriptor ) } return pomFiles; } + + protected static List<File> createAdditionalFiles( ReleaseDescriptor releaseDescriptor, MavenProject project ) + { + + List<File> additionalFiles = new ArrayList<File>(); + if(releaseDescriptor.getAdditionalCommittedIncludes() != null) { + String[] additionalIncludes = releaseDescriptor.getAdditionalCommittedIncludes().replaceAll( "\\s", "" ).split( "," ); ; + + if(additionalIncludes != null && additionalIncludes.length !=0) { + + File baseDir = project.getBasedir() ; + + DirectoryScanner scanner = new DirectoryScanner(); + scanner.setBasedir(baseDir); + scanner.setIncludes(additionalIncludes); + + scanner.scan(); + + if(scanner.getIncludedFiles() != null) { + for(String file : scanner.getIncludedFiles()) { + additionalFiles.add(new File(baseDir, file)) ; + } + } + + } + } + + return additionalFiles; + } + + protected static List<File> createAdditionalFiles( ReleaseDescriptor releaseDescriptor, List<MavenProject> reactorProjects ) + { + List<File> additionalFiles = new ArrayList<File>(); + for ( MavenProject project : reactorProjects ) + { + additionalFiles.addAll( createAdditionalFiles( releaseDescriptor, project ) ); + } + return additionalFiles; + } } diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhase.java index 889b9c35..0ddc789f 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/ScmCommitDevelopmentPhase.java @@ -21,6 +21,7 @@ import java.io.File; import java.text.MessageFormat; +import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -83,8 +84,12 @@ protected void runLogic( ReleaseDescriptor releaseDescriptor, ReleaseEnvironment if ( simulating ) { Collection<File> pomFiles = createPomFiles( releaseDescriptor, reactorProjects ); + Collection<File> additionalFiles = createAdditionalFiles(releaseDescriptor, reactorProjects) ; + Collection<File> files = new ArrayList<File>() ; + files.addAll(pomFiles) ; + files.addAll(additionalFiles) ; logInfo( result, - "Full run would be commit " + pomFiles.size() + " files with message: '" + message + "'" ); + "Full run would be commit " + files.size() + " files with message: '" + message + "'" ); } else { diff --git a/maven-release-manager/src/main/mdo/release-descriptor.mdo b/maven-release-manager/src/main/mdo/release-descriptor.mdo index 1dfc3f71..73c9e16b 100644 --- a/maven-release-manager/src/main/mdo/release-descriptor.mdo +++ b/maven-release-manager/src/main/mdo/release-descriptor.mdo @@ -489,6 +489,16 @@ with @{ and } </description> </field> + + <field> + <name>additionalCommittedIncludes</name> + <version>2.3.1+</version> + <type>String</type> + <description> + In some exceptions you want to commit some changes to the repository in addition to pom files. Changes + to files listed here will be committed. + </description> + </field> <!-- Announcement Information @@ -819,6 +829,11 @@ { return false; } + if ( !safeEquals( additionalCommittedIncludes, that.additionalCommittedIncludes ) ) + { + return false; + } + return true; } @@ -939,6 +954,7 @@ result = 29 * result + ( performGoals != null ? performGoals.hashCode() : 0 ); result = 29 * result + ( defaultReleaseVersion != null ? defaultReleaseVersion.hashCode() : 0 ); result = 29 * result + ( scmReleasedPomRevision != null ? scmReleasedPomRevision.hashCode() : 0 ); + result = 29 * result + ( additionalCommittedIncludes != null ? additionalCommittedIncludes.hashCode() : 0 ); return result; } diff --git a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java index 841206b2..526d46ec 100644 --- a/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java +++ b/maven-release-plugin/src/main/java/org/apache/maven/plugins/release/PrepareReleaseMojo.java @@ -21,6 +21,7 @@ import java.util.Arrays; +import org.apache.commons.lang.StringUtils; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Mojo; @@ -218,6 +219,22 @@ private int waitBeforeTagging; /** + * A list of additional include filters that will be commited with pom files. + * + * @since 2.4.2 + */ + @Parameter + private String[] additionalCommittedIncludes; + + /** + * Command-line version of additionalCommittedIncludes. + * + * @since 2.4.2 + */ + @Parameter( property = "additionalCommittedIncludeList" ) + private String additionalCommittedIncludeList; + + /** * {@inheritDoc} */ public void execute() @@ -266,6 +283,16 @@ protected void prepareRelease( boolean generateReleasePoms ) { config.setCheckModificationExcludes( Arrays.asList( checkModificationExcludes ) ); } + + if ( additionalCommittedIncludeList != null ) + { + additionalCommittedIncludes = additionalCommittedIncludeList.replaceAll( "\\s", "" ).split( "," ); + } + + if ( additionalCommittedIncludes != null ) + { + config.setAdditionalCommittedIncludes(StringUtils.join( additionalCommittedIncludes,"," ) ); + } // Create a config containing values from the session properties (ie command line properties with cli). ReleaseDescriptor sysPropertiesConfig = ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Commit additional files with release plugin > ------------------------------------------- > > Key: MRELEASE-798 > URL: https://issues.apache.org/jira/browse/MRELEASE-798 > Project: Maven Release Plugin > Issue Type: Improvement > Components: prepare, scm > Affects Versions: 2.3.2 > Reporter: Thorsten Hoeger > Priority: Major > Labels: github-pullrequest > Attachments: maven-release-2.4.1-additionalCommitted.patch > > > Hi, > is there any possibility to have the release-plugin commit additional files > which were > generated/modified in the preparationGoals. > Now only the pom.xml is commited. Using scm-plugin has some serious drawbacks > in this > situation. > If it is not possible at the moment, is there any chance to get this in the > future. Maybe > there could be a parameter additionalCommitFiles with a list of files to > commit along with > pom.xml. -- This message was sent by Atlassian JIRA (v6.4.14#64029)