5 Commits
Author SHA1 Message Date
brian.long 98348c22df updated POM URLs 2026-02-09 15:24:38 -05:00
brian.long fc23c185e0 upgraded dependency and plugin versions 2026-02-09 15:21:45 -05:00
brian.long 807db4dfb8 better property fetch ordering; fix for multi-module projects 2025-04-25 00:04:00 -04:00
brian.long eef0b3c2bf array to list 2025-04-11 11:19:35 -04:00
brian.long 3499a717e2 added verbose output option 2024-03-05 18:42:02 -05:00
13 changed files with 180 additions and 108 deletions
+36 -29
View File
@@ -58,52 +58,59 @@ This is a maven plugin that provides various regular expression based goals to M
| `copy-file` | A convenience goal that copies all files/folders specified in a source path to a target path. |
| `move-file` | A convenience goal that moves all files/folders specified in a source path to a target path. |
### Common Configuration Properties
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:-----------:|:--------:| ------- | ----------- |
| `allowMultiLineMatch` | `boolean` | | `false` | A value of `true` allows for multi-line matching. This takes substantially more memory/time to process. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
| `verbose` | `boolean` | | `false` | |
### Goal: `replace-file`
Manipulates all the contents in the specified files based the specified regular expression replacements.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:-----------:|:--------:| ------- | ----------- |
| `chunkSize` | `int` | | `1024` | The streaming buffer/chunk size in bytes, while evaluating the regular expressions. Adjust for classic speed/memory trade-off. Be aware that files are processed line-by-line, unless `allowMultiLineMatch` is set to `true`. |
| `filesets` | `FileSet[]` | Yes | | Executes against these files. |
| `regexes` | `Regex[]` | Yes | | Applies these regular expressions and replacement text against those files. |
| `allowMultiLineMatch` | `boolean` | | `false` | A value of `true` allows for multi-line matching. This takes substantially more memory/time to process. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
### Goal: `replace-properties`
Copies and replaces the values of the specified properties based on the specified regular expression replacements; storing the changed values in new properties.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:----------:|:--------:| -------- | ----------- |
| `properties` | `String[]` | Yes | | Executes against these properties. |
| `newPropertySuffix` | `String` | | `-regex` | All evaluated properties will be copied to new properties with the same property name plus this suffix. |
| `regexes` | `Regex[]` | Yes | | Applies these regular expressions and replacement text against those files. |
| `allowMultiLineMatch` | `boolean` | | `false` | A value of `true` allows for multi-line matching. This takes substantially more memory/time to process. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
### Goal: `replace-property`
Copies and replaces the value of the specified property based on the specified regular expression replacements; storing the changed value in a new property.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:----------:|:--------:| ------- | ----------- |
| `property` | `String` | Yes | | Executes against this property. |
| `newProperty` | `String` | | | The evaluated property will be copied to this property name. If not specified, it will be the same name as the `property` with a `-regex` suffix. |
| `regexes` | `Regex[]` | Yes | | Applies these regular expressions and replacement text against those files. |
| `allowMultiLineMatch` | `boolean` | | `false` | A value of `true` allows for multi-line matching. This takes substantially more memory/time to process. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
### Goal: `replace-text`
Replaces the specified text based on the specified regular expression replacements; storing the result in a property.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:----------:|:--------:| ------- | ----------- |
| `text` | `String` | Yes | | Execute against this text. |
| `newProperty` | `String` | Yes | | The evaluated text will be copied to this property name. |
| `regexes` | `Regex[]` | Yes | | Applies these regular expressions and replacement text against those files. |
| `allowMultiLineMatch` | `boolean` | | `false` | A value of `true` allows for multi-line matching. This takes substantially more memory/time to process. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
### Goal: `match-file`
Searches the contents of the specified files based using the specified regular expressions; storing the result of the search in a property.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:-----------:|:--------:| ------- | ----------- |
| `chunkSize` | `int` | | `1024` | The streaming buffer/chunk size in bytes, while evaluating the regular expressions. Adjust for classic speed/memory trade-off. Be aware that files are processed line-by-line, unless `allowMultiLineMatch` is set to `true`. |
@@ -112,12 +119,11 @@ This is a maven plugin that provides various regular expression based goals to M
| `patterns` | `String[]` | Yes | | Evaluates these regular expressions against those files. |
| `allowPartialMatch` | `boolean` | | `true` | A value of `true` allows for partial matching, rather than exact line-by-line matching. |
| `negate` | `boolean` | | `false` | A value of `true` will reverse the `true`/`false` on the resultant property value. |
| `allowMultiLineMatch` | `boolean` | | `false` | A value of `true` allows for multi-line matching. This takes substantially more memory/time to process. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
### Goal: `match-filename`
Checks the filenames of the specified files based using the specified regular expressions; storing the result in a property.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:-----------:|:--------:| ------- | ----------- |
| `sourceDirectory` | `File` | Yes | | Executes against this file. |
@@ -125,11 +131,11 @@ This is a maven plugin that provides various regular expression based goals to M
| `patterns` | `String[]` | Yes | | Evaluates these regular expressions the file. |
| `allowPartialMatch` | `boolean` | | `true` | A value of `true` allows for partial matching, rather than exact filename matching. |
| `negate` | `boolean` | | `false` | A value of `true` will reverse the `true`/`false` on the resultant property value. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
### Goal: `match-properties`
Checks the values of the specified properties based on the specified regular expressions; storing the results in new properties.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:----------:|:--------:| -------- | ----------- |
| `properties` | `String[]` | Yes | | Executes against these properties. |
@@ -137,12 +143,11 @@ This is a maven plugin that provides various regular expression based goals to M
| `patterns` | `String[]` | Yes | | Evaluates these regular expressions against those properties' values. |
| `allowPartialMatch` | `boolean` | | `true` | A value of `true` allows for partial matching, rather than exact matching. |
| `negate` | `boolean` | | `false` | A value of `true` will reverse the `true`/`false` on the resultant property value. |
| `allowMultiLineMatch` | `boolean` | | `false` | A value of `true` allows for multi-line matching. Very rare for property evaluation. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
### Goal: `match-property`
Checks the value of the specified property based on the specified regular expressions; storing the result in a new property.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:----------:|:--------:| ------- | ----------- |
| `property` | `String` | Yes | | Executes against this property. |
@@ -150,12 +155,11 @@ This is a maven plugin that provides various regular expression based goals to M
| `patterns` | `String[]` | Yes | | Evaluates these regular expressions against the property value. |
| `allowPartialMatch` | `boolean` | | `true` | A value of `true` allows for partial matching, rather than exact matching. |
| `negate` | `boolean` | | `false` | A value of `true` will reverse the `true`/`false` on the resultant property value. |
| `allowMultiLineMatch` | `boolean` | | `false` | A value of `true` allows for multi-line matching. Very rare for property evaluation. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
### Goal: `match-text`
Checks the specified text based on the specified regular expressions; storing the result in a property.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:----------:|:--------:| ------- | ----------- |
| `text` | `String` | Yes | | Execute against this text. |
@@ -163,24 +167,27 @@ This is a maven plugin that provides various regular expression based goals to M
| `patterns` | `String[]` | Yes | | Evaluates these regular expressions against the property value. |
| `allowPartialMatch` | `boolean` | | `true` | A value of `true` allows for partial matching, rather than exact matching. |
| `negate` | `boolean` | | `false` | A value of `true` will reverse the `true`/`false` on the resultant property value. |
| `allowMultiLineMatch` | `boolean` | | `false` | A value of `true` allows for multi-line matching. Very rare for property evaluation. |
| `charset` | `string` | | `utf-8` | |
| `skip` | `boolean` | | `false` | |
### Goal: `copy-file`
Copies all the files in the specified source directory while applying the specified regular expression replacements to their contents; storing the files in the specified target directory.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:----------:|:--------:| --------- | ----------- |
| ---------------------- |:---------:|:--------:| ---------- | ----------- |
| `sourceDirectory` | `File` | | ${basedir} | Copy all files from this directory. |
| `targetDirectory` | `File` | | ${basedir} | Copy all files to this directory. |
| `regexes` | `Regex[]` | Yes | | Applies these regular expressions and replacement text against those files. |
| `overwrite` | `boolean` | | `true` | |
### Goal: `move-file`
Moves all the files from the specified source directory while applying the specified regular expression replacements to their contents; storing the files in the specified target directory.
| Configuration Property | Data Type | Required | Default | Description |
| ---------------------- |:----------:|:--------:| --------- | ----------- |
| ---------------------- |:---------:|:--------:| ---------- | ----------- |
| `sourceDirectory` | `File` | | ${basedir} | Move all files from this directory. |
| `targetDirectory` | `File` | | ${basedir} | Move all files to this directory. |
| `regexes` | `Regex[]` | Yes | | Applies these regular expressions and replacement text against those files. |
| `overwrite` | `boolean` | | `true` | |
## Model
@@ -193,4 +200,4 @@ This is a maven plugin that provides various regular expression based goals to M
| `replacement` | `String` | | `` | A regular expression replacement string. |
| `previousPattern` | `String` | | | A regular expression pattern to look back against, removing everything down to and including the pattern. |
The `previousPattern` allows for you to match some text and remove everything before the match, up to the `prevoiusPattern. This is useful when matching a method and removing it and all its annotations.
The `previousPattern` allows for you to match some text and remove everything before the match, up to the `prevoiusPattern`. This is useful when matching a method and removing it and all its annotations. If the `previousPattern` has no match, it will not remove any text before the primary match.
+32 -20
View File
@@ -12,7 +12,7 @@
<name>Regular Expression Maven Plugin</name>
<description>A Maven plugin for regular expression operations</description>
<url>https://bitbucket.org/inteligr8/regex-maven-plugin</url>
<url>https://git.inteligr8.com/inteligr8/regex-maven-plugin</url>
<licenses>
<license>
@@ -22,9 +22,9 @@
</licenses>
<scm>
<connection>scm:git:https://bitbucket.org/inteligr8/regex-maven-plugin.git</connection>
<developerConnection>scm:git:git@bitbucket.org:inteligr8/regex-maven-plugin.git</developerConnection>
<url>https://bitbucket.org/inteligr8/regex-maven-plugin</url>
<connection>scm:git:https://git.inteligr8.com/inteligr8/regex-maven-plugin.git</connection>
<developerConnection>scm:git:git@git.inteligr8.com:inteligr8/regex-maven-plugin.git</developerConnection>
<url>https://git.inteligr8.com/inteligr8/regex-maven-plugin</url>
</scm>
<organization>
<name>Inteligr8</name>
@@ -43,19 +43,19 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.version>3.9.0</maven.version>
<maven.version>3.9.11</maven.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
<version>3.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>file-management</artifactId>
<version>3.1.0</version>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
@@ -66,7 +66,7 @@
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.7.1</version>
<version>3.15.1</version>
<scope>provided</scope>
</dependency>
<dependency>
@@ -90,16 +90,32 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.15.2</version>
</plugin>
<plugin>
<artifactId>maven-invoker-plugin</artifactId>
<version>3.9.1</version>
</plugin>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<version>2.2.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<goalPrefix>regex</goalPrefix>
</configuration>
@@ -121,7 +137,6 @@
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<version>2.0.0</version>
<executions>
<execution>
<goals>
@@ -132,7 +147,6 @@
</plugin>
<plugin>
<artifactId>maven-invoker-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<projectsDirectory>${basedir}/src/it</projectsDirectory>
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
@@ -168,7 +182,6 @@
<plugins>
<plugin>
<artifactId>maven-invoker-plugin</artifactId>
<version>3.2.2</version>
<executions>
<execution>
<id>run-its</id>
@@ -188,7 +201,7 @@
</build>
</profile>
<profile>
<id>ossrh-release</id>
<id>central-publish</id>
<build>
<plugins>
<plugin>
@@ -225,14 +238,13 @@
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.13</version>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.8.0</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
<publishingServerId>central</publishingServerId>
<autoPublish>true</autoPublish>
</configuration>
</plugin>
</plugins>
@@ -3,4 +3,6 @@ this is a multi line test file.
it is supposed to emulate larger files and multiline pattern matching.
sometimes this doesn՚t work with unicode characters.
good luck!
+3 -3
View File
@@ -160,17 +160,17 @@
</requireFileChecksum>
<requireFileChecksum>
<file>${project.build.directory}/noreplace-one/folder1/file12.txt</file>
<checksum>925a6e3bd25cdd61695aa55d008ab4d2</checksum>
<checksum>725d3a15f631dda5b058357129fd17fd</checksum>
<type>md5</type>
</requireFileChecksum>
<requireFileChecksum>
<file>${project.build.directory}/replace-linestart/file12.txt</file>
<checksum>fb1f2b040970526fc99b1339f22465f1</checksum>
<checksum>791882a340c18da89b524d7735cc085c</checksum>
<type>md5</type>
</requireFileChecksum>
<requireFileChecksum>
<file>${basedir}/folder1/file12.txt</file>
<checksum>a7f509275e16ff57cd7756cdca70822a</checksum>
<checksum>6fb82d67ec64b04df220a11adfba81a3</checksum>
<type>md5</type>
</requireFileChecksum>
</rules>
@@ -21,9 +21,10 @@ import org.apache.maven.model.Profile;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@Component(role = ProjectPropertyResolver.class)
public class StandardProjectPropertyResolver implements ProjectPropertyResolver {
@Component(role = ProjectPropertyResolver.class, instantiationStrategy = "per-lookup")
public class StandardProjectPropertyResolver extends AbstractLogEnabled implements ProjectPropertyResolver {
@Requirement
private MavenSession session;
@@ -51,34 +52,38 @@ public class StandardProjectPropertyResolver implements ProjectPropertyResolver
private Properties findPropertiesObject(String key) {
// search the user/cli properties first
Properties props = this.session.getUserProperties();
if (props.containsKey(key))
return props;
// search the profiles next; in order (FIXME maybe we should go backwards?)
for (Profile profile : this.project.getActiveProfiles()) {
props = profile.getProperties();
if (props.containsKey(key))
if (props.containsKey(key)) {
this.getLogger().debug("Found in session user properties: " + key);
return props;
}
// now look at the project props
props = this.project.getProperties();
if (props.containsKey(key))
return props;
// now recursively look up the parent project props
MavenProject ancestor = this.project.getParent();
MavenProject ancestor = this.project;
while (ancestor != null) {
props = ancestor.getProperties();
if (props.containsKey(key))
// search the profiles next; in order (FIXME maybe we should go backwards?)
for (Profile profile : ancestor.getActiveProfiles()) {
props = profile.getProperties();
if (props.containsKey(key)) {
this.getLogger().debug("Found in project profile properties: " + ancestor.getArtifact() + ": " + profile.getId() + ": " + key);
return props;
}
}
// now look at the project props
props = ancestor.getProperties();
if (props.containsKey(key)) {
this.getLogger().debug("Found in project properties: " + ancestor.getArtifact() + ": " + key);
return props;
}
ancestor = ancestor.getParent();
}
// search the system properties last (FIXME is this right?)
props = this.session.getSystemProperties();
if (props.containsKey(key))
if (props.containsKey(key)) {
this.getLogger().debug("Found in system properties: " + key);
return props;
}
return null;
}
@@ -48,8 +48,10 @@ public abstract class AbstractMatchMojo extends AbstractRegexMojo {
@Override
protected void executeOnText(Properties props, String text, String newPropertyName) {
boolean matches = this.matches(text);
if (matches)
this.getLog().debug("Matches!");
if (this.verbose)
this.getLog().info("Setting property: " + newPropertyName + ": " + matches);
else if (matches)
this.getLog().info("Matches!");
if (props == null)
props = this.project.getProperties();
props.setProperty(newPropertyName, String.valueOf(matches));
@@ -97,13 +99,19 @@ public abstract class AbstractMatchMojo extends AbstractRegexMojo {
Matcher matcher = pattern.matcher(text);
if (this.allowPartialMatch) {
if (matcher.find())
if (matcher.find()) {
if (this.verbose)
this.getLog().info("Pattern '" + pattern + "' matches text: " + text);
return !this.negate;
}
} else {
if (matcher.matches())
if (matcher.matches()) {
if (this.verbose)
this.getLog().info("Pattern '" + pattern + "' matches text: " + text);
return !this.negate;
}
}
}
return this.negate;
}
@@ -46,6 +46,9 @@ public abstract class AbstractRegexMojo extends AbstractMojo {
@Parameter( property = "skip", required = true, defaultValue = "false" )
protected boolean skip = false;
@Parameter( property = "verbose", required = true, defaultValue = "false" )
protected boolean verbose = false;
public final void execute() throws MojoExecutionException, MojoFailureException {
if (this.skip) {
this.getLog().debug("Skipped execution");
@@ -24,7 +24,6 @@ import java.nio.file.StandardCopyOption;
import java.nio.file.StandardOpenOption;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -42,7 +41,7 @@ import com.inteligr8.nio.DelimitedReadableByteChannel;
public abstract class AbstractReplaceMojo extends AbstractRegexMojo {
@Parameter( property = "regexes", required = true )
protected List<Regex> regexes;
protected Regex[] regexes;
// Pattern does not implement hashCode, so not using a Map
private List<Triple<Pattern, String, Pattern>> compiledRegexes;
@@ -54,8 +53,12 @@ public abstract class AbstractReplaceMojo extends AbstractRegexMojo {
String originalText = text;
text = this.replaceAll(text);
if (this.getLog().isDebugEnabled() && !text.equals(originalText))
if (!text.equals(originalText)) {
if (this.verbose)
this.getLog().info("Setting property: " + newPropertyName + ": " + text);
else if (this.getLog().isDebugEnabled())
this.getLog().debug("Manipulated value: " + text);
}
if (props == null)
props = this.project.getProperties();
props.setProperty(newPropertyName, text);
@@ -205,8 +208,6 @@ public abstract class AbstractReplaceMojo extends AbstractRegexMojo {
protected String replaceAll(String text) {
if (text == null)
text = "";
if (this.getLog().isDebugEnabled())
this.getLog().debug("replace all: " + text.length());
for (Triple<Pattern, String, Pattern> regex : this.compiledRegexes) {
this.getLog().debug("Applying regex pattern: " + regex.getLeft());
@@ -214,13 +215,27 @@ public abstract class AbstractReplaceMojo extends AbstractRegexMojo {
Matcher matcher = regex.getLeft().matcher(text);
if (regex.getRight() == null) {
text = matcher.replaceAll(regex.getMiddle());
String newtext = matcher.replaceAll(regex.getMiddle());
if (this.verbose)
this.getLog().info("Pattern '" + regex.getLeft() + "' matches text: " + text + "; replaced with: " + newtext);
text = newtext;
} else while (matcher.find()) {
Integer previousMatchStart = this.findLastMatchIndex(regex.getRight(), text.substring(0, matcher.start()));
text = text.substring(0, previousMatchStart) + text.substring(matcher.start());
if (previousMatchStart == null) {
// the previous pattern matches nothing; ignore
} else {
String newtext = text.substring(0, previousMatchStart) + text.substring(matcher.start());
if (this.verbose)
this.getLog().info("Pattern '" + regex.getRight() + "' matches text: " + text + "; chopped until next pattern: " + text);
text = newtext;
matcher = regex.getLeft().matcher(text);
text = matcher.replaceFirst(regex.getMiddle());
}
String newtext = matcher.replaceFirst(regex.getMiddle());
if (this.verbose)
this.getLog().info("Pattern '" + regex.getLeft() + "' matches text: " + text + "; replaced with: " + newtext);
text = newtext;
}
}
@@ -240,7 +255,7 @@ public abstract class AbstractReplaceMojo extends AbstractRegexMojo {
protected void validateParamsPreNormalization() throws MojoFailureException {
super.validateParamsPreNormalization();
if (this.regexes == null)
if (this.regexes == null || this.regexes.length == 0)
throw new MojoFailureException("A 'regexes' element is required");
}
@@ -248,22 +263,15 @@ public abstract class AbstractReplaceMojo extends AbstractRegexMojo {
protected void normalizeParameters() throws MojoFailureException {
super.normalizeParameters();
ListIterator<Regex> r = this.regexes.listIterator();
while (r.hasNext()) {
Regex regex = r.next();
if (regex == null) {
r.remove();
} else {
for (Regex regex : this.regexes)
regex.normalize();
}
}
}
@Override
protected void validateParamsPostNormalization() throws MojoFailureException {
super.validateParamsPostNormalization();
if (this.regexes.isEmpty())
if (this.regexes == null || this.regexes.length == 0)
throw new MojoFailureException("At least one 'regexes' element is required");
this.compiledRegexes = new LinkedList<>();
@@ -33,6 +33,12 @@ public class CopyFileMojo extends AbstractFileMojo {
} else {
Files.copy(sourcePath, targetPath);
}
if (this.verbose) {
this.getLog().info("Copied " + sourcePath + " to " + targetPath);
} else {
this.getLog().info("Copied " + sourcePath.getFileName() + " to " + targetPath);
}
}
}
@@ -47,7 +47,9 @@ public class MatchFileContentMojo extends AbstractMatchMojo {
this.getLog().debug("Executing file regex match");
boolean matches = this.matchesContentInFileSet();
if (matches)
if (this.verbose)
this.getLog().info("Setting property: " + this.newProperty + ": " + matches);
else if (matches)
this.getLog().info("Matches!");
this.project.getProperties().setProperty(this.newProperty, String.valueOf(matches));
}
@@ -64,10 +66,13 @@ public class MatchFileContentMojo extends AbstractMatchMojo {
for (String filePathAndName : filePathsAndNames) {
Path file = baseInputPath.resolve(filePathAndName);
if (!Files.isDirectory(file))
if (this.matches(file, this.chunkSize))
if (this.matches(file, this.chunkSize)) {
if (this.verbose)
this.getLog().info("A pattern matches file: " + file);
return true;
}
}
}
} catch (IOException ie) {
throw new MojoExecutionException("Execution failed due to an I/O related issue", ie);
}
@@ -67,9 +67,12 @@ public class MatchFilenameMojo extends AbstractMatchMojo {
if (!Files.isDirectory(file)) {
getLog().debug("Visiting file: " + file);
if (matches(basepath.relativize(file).toString()))
if (matches(basepath.relativize(file).toString())) {
if (MatchFilenameMojo.this.verbose)
MatchFilenameMojo.this.getLog().info("A pattern matches filename: " + file);
matches.setTrue();
}
}
return matches.isTrue() ? FileVisitResult.TERMINATE : FileVisitResult.CONTINUE;
}
@@ -82,7 +85,9 @@ public class MatchFilenameMojo extends AbstractMatchMojo {
throw new MojoExecutionException(ie.getMessage(), ie);
}
if (matches.booleanValue())
if (this.verbose)
this.getLog().info("Setting property: " + this.newProperty + ": " + matches);
else if (matches.booleanValue())
this.getLog().info("Matches!");
this.project.getProperties().setProperty(this.newProperty, matches.toString());
}
@@ -33,6 +33,12 @@ public class MoveFileMojo extends AbstractFileMojo {
} else {
Files.move(sourcePath, targetPath);
}
if (this.verbose) {
this.getLog().info("Moved " + sourcePath + " to " + targetPath);
} else {
this.getLog().info("Moved " + sourcePath.getFileName() + " to " + targetPath);
}
}
}
@@ -62,8 +62,13 @@ public class ReplaceFileContentMojo extends AbstractReplaceMojo {
if (!Files.exists(tofile.getParent()))
Files.createDirectories(tofile.getParent());
if (!Files.isDirectory(file))
didReplace = this.replaceAll(file, tofile, this.chunkSize) || didReplace;
if (!Files.isDirectory(file)) {
if (this.replaceAll(file, tofile, this.chunkSize)) {
if (this.verbose)
this.getLog().info("A pattern replaced in file: " + file + " => " + tofile);
didReplace = true;
}
}
}
}
} catch (IOException ie) {