diff --git a/pom.xml b/pom.xml
index 1243429..e247b95 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,8 @@
org.apache.maven.shared
maven-shared-components
- 34
+ 36
+
maven-filtering
@@ -55,7 +56,8 @@
3.2.5
- 7
+ 1.7.36
+ 8
2020-08-05T15:18:01Z
@@ -66,20 +68,33 @@
+
+ javax.inject
+ javax.inject
+ 1
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4jVersion}
+
org.apache.maven
maven-core
${mavenVersion}
+ provided
org.apache.maven
maven-model
${mavenVersion}
+ provided
org.apache.maven
maven-settings
${mavenVersion}
+ provided
org.eclipse.sisu
@@ -90,15 +105,10 @@
org.codehaus.plexus
plexus-component-annotations
-
- org.apache.maven.shared
- maven-shared-utils
- 3.3.4
-
org.codehaus.plexus
plexus-utils
- 3.3.0
+ 3.4.2
org.codehaus.plexus
@@ -108,25 +118,13 @@
commons-io
commons-io
- 2.6
-
-
- org.sonatype.plexus
- plexus-build-api
- 0.0.7
-
-
- org.sonatype.plexus
- plexus-build-api
- 0.0.7
- test
- tests
+ 2.11.0
org.mockito
mockito-core
- 2.28.2
+ 4.5.1
test
@@ -141,21 +139,20 @@
2.2
test
+
+ org.slf4j
+ slf4j-simple
+ ${slf4jVersion}
+ test
+
- org.codehaus.plexus
- plexus-component-metadata
-
-
-
- generate-metadata
-
-
-
+ org.eclipse.sisu
+ sisu-maven-plugin
diff --git a/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java b/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java
index be8908f..6059c65 100644
--- a/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java
+++ b/src/main/java/org/apache/maven/shared/filtering/BaseFilter.java
@@ -32,7 +32,6 @@
import org.apache.maven.execution.MavenSession;
import org.apache.maven.project.MavenProject;
import org.apache.maven.settings.Settings;
-import org.apache.maven.shared.utils.StringUtils;
import org.apache.maven.shared.utils.io.FileUtils;
import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
import org.codehaus.plexus.interpolation.Interpolator;
@@ -195,7 +194,7 @@ void loadProperties( Properties filterProperties, File basedir, List pro
for ( String filterFile : propertiesFilePaths )
{
- if ( StringUtils.isEmpty( filterFile ) )
+ if ( filterFile == null || filterFile.trim().isEmpty() )
{
// skip empty file name
continue;
diff --git a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
index 3995650..ca7a6f8 100644
--- a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
+++ b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
@@ -19,6 +19,10 @@
* under the License.
*/
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
import java.io.File;
import java.io.IOException;
import java.util.List;
@@ -27,24 +31,25 @@
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.utils.io.FileUtils;
import org.apache.maven.shared.utils.io.FileUtils.FilterWrapper;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-import org.sonatype.plexus.build.incremental.BuildContext;
+
+import static java.util.Objects.requireNonNull;
/**
* @author Olivier Lamy
*/
-@Component( role = org.apache.maven.shared.filtering.MavenFileFilter.class, hint = "default" )
+@Singleton
+@Named
public class DefaultMavenFileFilter
extends BaseFilter
implements MavenFileFilter
{
+ private final MavenReaderFilter readerFilter;
- @Requirement
- private MavenReaderFilter readerFilter;
-
- @Requirement
- private BuildContext buildContext;
+ @Inject
+ public DefaultMavenFileFilter( MavenReaderFilter readerFilter )
+ {
+ this.readerFilter = requireNonNull( readerFilter );
+ }
@Override
public void copyFile( File from, File to, boolean filtering, MavenProject mavenProject, List filters,
@@ -105,8 +110,6 @@ public void copyFile( File from, File to, boolean filtering, List defaultNonFilteredFileExtensions;
-
- @Requirement
- private BuildContext buildContext;
+ private final List defaultNonFilteredFileExtensions;
- @Requirement
- private MavenFileFilter mavenFileFilter;
+ private final MavenFileFilter mavenFileFilter;
- // ------------------------------------------------
- // Plexus lifecycle
- // ------------------------------------------------
- @Override
- public void initialize()
- throws InitializationException
+ @Inject
+ public DefaultMavenResourcesFiltering( MavenFileFilter mavenFileFilter )
{
+ this.mavenFileFilter = mavenFileFilter;
this.defaultNonFilteredFileExtensions = new ArrayList<>( 5 );
this.defaultNonFilteredFileExtensions.add( "jpg" );
this.defaultNonFilteredFileExtensions.add( "jpeg" );
@@ -90,23 +83,25 @@ public boolean filteredFileExtension( String fileName, List userNonFilte
{
nonFilteredFileExtensions.addAll( userNonFilteredFileExtensions );
}
- String extension = StringUtils.lowerCase( FilenameUtils.getExtension( fileName ) );
+ String extension = getExtension( fileName );
boolean filteredFileExtension = !nonFilteredFileExtensions.contains( extension );
- if ( getLogger().isDebugEnabled() )
+ if ( LOGGER.isDebugEnabled() )
{
- getLogger().debug( "file " + fileName + " has a" + ( filteredFileExtension ? " " : " non " )
+ LOGGER.debug( "file " + fileName + " has a" + ( filteredFileExtension ? " " : " non " )
+ "filtered file extension" );
}
return filteredFileExtension;
}
+ private static String getExtension( String fileName )
+ {
+ String rawExt = FilenameUtils.getExtension( fileName );
+ return rawExt == null ? null : rawExt.toLowerCase( Locale.ROOT );
+ }
+
@Override
public List getDefaultNonFilteredFileExtensions()
{
- if ( this.defaultNonFilteredFileExtensions == null )
- {
- this.defaultNonFilteredFileExtensions = new ArrayList<>();
- }
return this.defaultNonFilteredFileExtensions;
}
@@ -121,7 +116,7 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
if ( mavenResourcesExecution.getResources() == null )
{
- getLogger().info( "No resources configured skip copying/filtering" );
+ LOGGER.info( "No resources configured skip copying/filtering" );
return;
}
@@ -137,24 +132,24 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
if ( mavenResourcesExecution.getEncoding() == null || mavenResourcesExecution.getEncoding().length() < 1 )
{
- getLogger().warn( "Using platform encoding (" + ReaderFactory.FILE_ENCODING
+ LOGGER.warn( "Using platform encoding (" + System.getProperty( "file.encoding" )
+ " actually) to copy filtered resources, i.e. build is platform dependent!" );
}
else
{
- getLogger().debug( "Using '" + mavenResourcesExecution.getEncoding()
+ LOGGER.debug( "Using '" + mavenResourcesExecution.getEncoding()
+ "' encoding to copy filtered resources." );
}
if ( mavenResourcesExecution.getPropertiesEncoding() == null
|| mavenResourcesExecution.getPropertiesEncoding().length() < 1 )
{
- getLogger().debug( "Using '" + mavenResourcesExecution.getEncoding()
+ LOGGER.debug( "Using '" + mavenResourcesExecution.getEncoding()
+ "' encoding to copy filtered properties files." );
}
else
{
- getLogger().debug( "Using '" + mavenResourcesExecution.getPropertiesEncoding()
+ LOGGER.debug( "Using '" + mavenResourcesExecution.getPropertiesEncoding()
+ "' encoding to copy filtered properties files." );
}
@@ -165,7 +160,7 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
for ( Resource resource : mavenResourcesExecution.getResources() )
{
- if ( getLogger().isDebugEnabled() )
+ if ( LOGGER.isDebugEnabled() )
{
String ls = System.lineSeparator();
StringBuilder debugMessage =
@@ -179,7 +174,7 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
: resource.getIncludes().toString() );
// @formatter:on
- getLogger().debug( debugMessage.toString() );
+ LOGGER.debug( debugMessage.toString() );
}
String targetPath = resource.getTargetPath();
@@ -194,7 +189,7 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
if ( resourceDirectory == null || !resourceDirectory.exists() )
{
- getLogger().info( "skip non existing resourceDirectory " + resourceDirectory );
+ LOGGER.info( "skip non existing resourceDirectory " + resourceDirectory );
continue;
}
@@ -238,13 +233,13 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
List includedFiles = Arrays.asList( scanner.getIncludedFiles() );
- getLogger().info( "Copying " + includedFiles.size() + " resource" + ( includedFiles.size() > 1 ? "s" : "" )
+ LOGGER.info( "Copying " + includedFiles.size() + " resource" + ( includedFiles.size() > 1 ? "s" : "" )
+ ( targetPath == null ? "" : " to " + targetPath ) );
for ( String name : includedFiles )
{
- getLogger().debug( "Copying file " + name );
+ LOGGER.debug( "Copying file " + name );
File source = new File( resourceDirectory, name );
File destinationFile = getDestinationFile( outputDirectory, targetPath, name, mavenResourcesExecution );
@@ -253,7 +248,7 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
{
if ( mavenResourcesExecution.isOverwrite() )
{
- getLogger().warn( "existing file " + destinationFile.getName()
+ LOGGER.warn( "existing file " + destinationFile.getName()
+ " will be overwritten by " + name );
}
else
@@ -272,7 +267,7 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
// Determine which encoding to use when filtering this file
String encoding = getEncoding( source, mavenResourcesExecution.getEncoding(),
mavenResourcesExecution.getPropertiesEncoding() );
- getLogger().debug( "Using '" + encoding + "' encoding to copy filtered resource '"
+ LOGGER.debug( "Using '" + encoding + "' encoding to copy filtered resource '"
+ source.getName() + "'." );
mavenFileFilter.copyFile( source, destinationFile, resource.isFiltering() && filteredExt,
mavenResourcesExecution.getFilterWrappers(),
@@ -313,7 +308,7 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
&& propertiesFiles.size() > 0 )
{
// @todo Sometime in the future we should change this to be a warning
- getLogger().info( "The encoding used to copy filtered properties files have not been set."
+ LOGGER.info( "The encoding used to copy filtered properties files have not been set."
+ " This means that the same encoding will be used to copy filtered properties files"
+ " as when copying other filtered resources. This might not be what you want!"
+ " Run your build with --debug to see which files might be affected."
@@ -328,7 +323,7 @@ public void filterResources( MavenResourcesExecution mavenResourcesExecution )
{
affectedFiles.append( System.lineSeparator() ).append( " - " ).append( propertiesFile.getPath() );
}
- getLogger().debug( affectedFiles.toString() );
+ LOGGER.debug( affectedFiles.toString() );
}
@@ -374,8 +369,7 @@ static String getEncoding( File file, String encoding, String propertiesEncoding
*/
static boolean isPropertiesFile( File file )
{
- String extension = StringUtils.lowerCase( FilenameUtils.getExtension( ( file.getName() ) ) );
- return "properties".equals( extension );
+ return "properties".equals( getExtension( file.getName() ) );
}
private void handleDefaultFilterWrappers( MavenResourcesExecution mavenResourcesExecution )
diff --git a/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java b/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java
index ffaf21f..71bd13e 100644
--- a/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java
+++ b/src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java
@@ -21,8 +21,6 @@
import java.util.regex.Pattern;
-import org.apache.maven.shared.utils.StringUtils;
-
/**
* @author Olivier Lamy
* @author Dennis Lundberg
@@ -49,7 +47,7 @@ private FilteringUtils()
*/
public static String escapeWindowsPath( String val )
{
- if ( !StringUtils.isEmpty( val ) && PATTERN.matcher( val ).matches() )
+ if ( !isEmpty( val ) && PATTERN.matcher( val ).matches() )
{
// Adapted from StringUtils.replace in plexus-utils to accommodate pre-escaped backslashes.
StringBuilder buf = new StringBuilder( val.length() );
@@ -72,4 +70,8 @@ public static String escapeWindowsPath( String val )
return val;
}
+ static boolean isEmpty( final String string )
+ {
+ return string == null || string.trim().isEmpty();
+ }
}
diff --git a/src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java b/src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java
index b37f7de..d84f07a 100644
--- a/src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java
+++ b/src/main/java/org/apache/maven/shared/filtering/PropertyUtils.java
@@ -28,9 +28,10 @@
import java.util.List;
import java.util.Properties;
-import org.apache.maven.shared.utils.StringUtils;
import org.codehaus.plexus.logging.Logger;
+import static org.apache.maven.shared.filtering.FilteringUtils.isEmpty;
+
/**
* @author Kenney Westerhof
* @author William Ferguson
@@ -234,7 +235,7 @@ private static String getPropertyValue( String k, Properties p, Logger logger )
valueChain.add( nk );
// try global environment..
- if ( nv == null && !StringUtils.isEmpty( nk ) )
+ if ( nv == null && !isEmpty( nk ) )
{
nv = System.getProperty( nk );
}
diff --git a/src/test/resources/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.xml b/src/test/resources/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.xml
deleted file mode 100644
index 551b1b4..0000000
--- a/src/test/resources/org/apache/maven/shared/filtering/IncrementalResourceFilteringTest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- org.sonatype.plexus.build.incremental.BuildContext
- default
- org.sonatype.plexus.build.incremental.ThreadBuildContext
-
-
-