diff --git a/README.md b/README.md new file mode 100644 index 0000000..8ccacf9 --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ + +# Directory Merge Maven Plugin + +This is a maven plugin that provides directory/file merging/appending support to Maven. + +## Goals + +| Goal | Description | +| -------------------- | ----------- | +| `merge-files` | Merge the configured fileset of directories and their files into | +| `merge-dirs` | Apply a regular expression pattern against a set of property values, replacing matches with the specified text, and storing in new properties. | +| `append-files` | Apply a regular expression pattern against a property value, replacing matches with the specified text, and storing in a new property. | + +### Goal: `merge-files` + +| Configuration Property | Data Type | Required | Default | Description | +| ---------------------- |:-----------:|:--------:| ------- | ----------- | +| `filesets` | `FileSet[]` | Yes | | Executes against these files. | +| `chunkSize` | `int` | | `1024` | The streaming buffer/chunk size in bytes, while merging files. Adjust for classic speed/memory trade-off. | +| `encoding` | `string` | | `utf-8` | | +| `spacing` | `int` | | `0` | How much spacing between appended files. | +| `lineEnding` | `string` | | `\n` | Typically LF (`\n`) or CRLF (`\r\n`). | + +### Goal: `merge-dirs` + +| Configuration Property | Data Type | Required | Default | Description | +| ---------------------- |:-----------:|:--------:| ------- | ----------- | +| `filesets` | `FileSet[]` | Yes | | Executes against these files. | +| `chunkSize` | `int` | | `1024` | The streaming buffer/chunk size in bytes, while merging files. Adjust for classic speed/memory trade-off. | +| `encoding` | `string` | | `utf-8` | | +| `spacing` | `int` | | `0` | How much spacing between appended files. | +| `lineEnding` | `string` | | `\n` | Typically LF (`\n`) or CRLF (`\r\n`). | + +### Goal: `append-files` + +| Configuration Property | Data Type | Required | Default | Description | +| ---------------------- |:-----------:|:--------:| ------- | ----------- | +| `filesets` | `FileSet[]` | Yes | | Executes against these files. | +| `includeHeader` | `boolean` | | `false` | Should a header be added for each appended file? | +| `outputFileName` | `string` | | `merged.txt` | The file to output from the merged filesets. | +| `chunkSize` | `int` | | `1024` | The streaming buffer/chunk size in bytes, while merging files. Adjust for classic speed/memory trade-off. | +| `encoding` | `string` | | `utf-8` | | +| `spacing` | `int` | | `0` | How much spacing between appended files. | +| `lineEnding` | `string` | | `\n` | Typically LF (`\n`) or CRLF (`\r\n`). | diff --git a/pom.xml b/pom.xml index 174d9c1..07c4325 100644 --- a/pom.xml +++ b/pom.xml @@ -1,8 +1,7 @@ - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.inteligr8 @@ -10,9 +9,20 @@ 1.0-SNAPSHOT maven-plugin - A Maven plugin for directory/file merge operations + Directory Merge Maven Plugin + A Maven plugin for directory/file merge operations + https://bitbucket.org/inteligr8/merge-maven-plugin + + + + GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007 + https://www.gnu.org/licenses/lgpl-3.0.txt + + + scm:git:https://bitbucket.org/inteligr8/merge-maven-plugin.git + scm:git:git@bitbucket.org:inteligr8/merge-maven-plugin.git https://bitbucket.org/inteligr8/merge-maven-plugin @@ -142,19 +152,6 @@ - - maven-javadoc-plugin - - - javadoc - package - jar - - public - - - - @@ -189,14 +186,56 @@ + + ossrh-release + + + + maven-source-plugin + + + source + package + jar-no-fork + + + + + maven-javadoc-plugin + + + javadoc + package + jar + + public + + + + + + maven-gpg-plugin + + + sign + verify + sign + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.13 + true + + ossrh + https://s01.oss.sonatype.org/ + true + + + + + - - - - inteligr8-releases - Inteligr8 Releases - https://repos.inteligr8.com/nexus/repository/inteligr8-public - - - diff --git a/src/main/java/com/inteligr8/maven/merge/AbstractFileContentMojo.java b/src/main/java/com/inteligr8/maven/merge/AbstractFileContentMojo.java index 959762b..beeeda1 100644 --- a/src/main/java/com/inteligr8/maven/merge/AbstractFileContentMojo.java +++ b/src/main/java/com/inteligr8/maven/merge/AbstractFileContentMojo.java @@ -31,6 +31,11 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; +/** + * This class provides general file content support for other goals. + * + * @author brian@inteligr8.com + */ public abstract class AbstractFileContentMojo extends AbstractMojo { @Parameter( defaultValue = "${project}", readonly = true ) diff --git a/src/main/java/com/inteligr8/maven/merge/AbstractMergeMojo.java b/src/main/java/com/inteligr8/maven/merge/AbstractMergeMojo.java index 45f5b32..bfadf9a 100755 --- a/src/main/java/com/inteligr8/maven/merge/AbstractMergeMojo.java +++ b/src/main/java/com/inteligr8/maven/merge/AbstractMergeMojo.java @@ -27,6 +27,11 @@ import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.shared.model.fileset.FileSet; import org.apache.maven.shared.model.fileset.util.FileSetManager; +/** + * This class provides general merging support for other goals. + * + * @author brian@inteligr8.com + */ public abstract class AbstractMergeMojo extends AbstractFileContentMojo { @Parameter( property = "filesets", required = true ) diff --git a/src/main/java/com/inteligr8/maven/merge/AppendFilesContentMojo.java b/src/main/java/com/inteligr8/maven/merge/AppendFilesContentMojo.java index e7f331a..4b0bbb8 100644 --- a/src/main/java/com/inteligr8/maven/merge/AppendFilesContentMojo.java +++ b/src/main/java/com/inteligr8/maven/merge/AppendFilesContentMojo.java @@ -26,6 +26,12 @@ import org.apache.maven.shared.model.fileset.FileSet; import org.apache.maven.shared.model.fileset.util.FileSetManager; import org.codehaus.plexus.component.annotations.Component; +/** + * This goal appends all the files in the configured fileset and writes that + * one resultant file to the configured output file. + * + * @author brian@inteligr8.com + */ @Mojo( name = "append-files", threadSafe = true ) @Component( role = org.apache.maven.plugin.Mojo.class ) public class AppendFilesContentMojo extends AbstractFileContentMojo { diff --git a/src/main/java/com/inteligr8/maven/merge/MergeDirectoriesMojo.java b/src/main/java/com/inteligr8/maven/merge/MergeDirectoriesMojo.java index d78ac35..0c2044a 100644 --- a/src/main/java/com/inteligr8/maven/merge/MergeDirectoriesMojo.java +++ b/src/main/java/com/inteligr8/maven/merge/MergeDirectoriesMojo.java @@ -18,6 +18,12 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Mojo; import org.codehaus.plexus.component.annotations.Component; +/** + * This goal merges all the directories/files in the configured fileset, + * appending any duplicate files. + * + * @author brian@inteligr8.com + */ @Mojo( name = "merge-dirs", threadSafe = true ) @Component( role = org.apache.maven.plugin.Mojo.class ) public class MergeDirectoriesMojo extends AbstractMergeMojo { diff --git a/src/main/java/com/inteligr8/maven/merge/MergeFilesMojo.java b/src/main/java/com/inteligr8/maven/merge/MergeFilesMojo.java index 71866fe..0de9491 100755 --- a/src/main/java/com/inteligr8/maven/merge/MergeFilesMojo.java +++ b/src/main/java/com/inteligr8/maven/merge/MergeFilesMojo.java @@ -18,6 +18,12 @@ import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Mojo; import org.codehaus.plexus.component.annotations.Component; +/** + * This goal merges all the files in the configured fileset, appending any + * duplicate files. + * + * @author brian@inteligr8.com + */ @Mojo( name = "merge-files", threadSafe = true ) @Component( role = org.apache.maven.plugin.Mojo.class ) public class MergeFilesMojo extends AbstractMergeMojo {