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 - - -