You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2020/02/13 22:11:15 UTC
[maven-filtering] 05/44: add project filter files in the value
interpolation Map add a hack for interpolation on file for windows
This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to annotated tag maven-filtering-1.0-alpha-1
in repository https://gitbox.apache.org/repos/asf/maven-filtering.git
commit 559b83be720b9b0bed6f404f94890ce1aa06cbe6
Author: Oliver Lamy <ol...@apache.org>
AuthorDate: Thu Jan 31 23:48:31 2008 +0000
add project filter files in the value interpolation Map
add a hack for interpolation on file for windows
git-svn-id: https://svn.apache.org/repos/asf/maven/sandbox/trunk/shared/maven-filtering@617299 13f79535-47bb-0310-9956-ffa450edef68
---
.../shared/filtering/DefaultMavenFileFilter.java | 42 +++++++++++++++++++++-
.../maven/shared/filtering/MavenFileFilter.java | 4 +--
.../shared/filtering/ReflectionProperties.java | 24 ++++++++++---
.../DefaultMavenResourcesFilteringTest.java | 10 +++---
.../maven/shared/filtering/StubMavenProject.java | 13 +++++++
.../maven-resources-filtering.txt | 3 +-
6 files changed, 83 insertions(+), 13 deletions(-)
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 fe58371..0437f11 100755
--- a/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
+++ b/src/main/java/org/apache/maven/shared/filtering/DefaultMavenFileFilter.java
@@ -42,7 +42,7 @@ import org.codehaus.plexus.util.InterpolationFilterReader;
public class DefaultMavenFileFilter
implements MavenFileFilter
{
-
+
/**
* @see org.apache.maven.shared.filtering.MavenFileFilter#copyFile(java.io.File, java.io.File, boolean, org.apache.maven.project.MavenProject, java.util.List)
*/
@@ -119,7 +119,46 @@ public class DefaultMavenFileFilter
}
}
}
+
+ List buildFilters = mavenProject.getFilters();
+ if (buildFilters != null)
+ {
+ for (Iterator iterator = buildFilters.iterator();iterator.hasNext();)
+ {
+ String filterFile = (String) iterator.next();
+ try
+ {
+
+ Properties properties = PropertyUtils.loadPropertyFile( new File( filterFile ), baseProps );
+ filterProperties.putAll( properties );
+ }
+ catch ( IOException e )
+ {
+ throw new MavenFilteringException( "Error loading property file '" + filterFile + "'", e );
+ }
+ }
+ }
+
+ buildFilters = mavenProject.getBuild().getFilters();
+ if (buildFilters != null)
+ {
+ for (Iterator iterator = buildFilters.iterator();iterator.hasNext();)
+ {
+ String filterFile = (String) iterator.next();
+ try
+ {
+
+ Properties properties = PropertyUtils.loadPropertyFile( new File( filterFile ), baseProps );
+ filterProperties.putAll( properties );
+ }
+ catch ( IOException e )
+ {
+ throw new MavenFilteringException( "Error loading property file '" + filterFile + "'", e );
+ }
+ }
+ }
+
List defaultFilterWrappers = new ArrayList( 3 );
// support ${token}
@@ -151,6 +190,7 @@ public class DefaultMavenFileFilter
return new InterpolationFilterReader( reader, reflectionProperties, "${", "}" );
}
};
+
defaultFilterWrappers.add( third );
return defaultFilterWrappers;
diff --git a/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java b/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
index a0c29ac..ea8a452 100755
--- a/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
+++ b/src/main/java/org/apache/maven/shared/filtering/MavenFileFilter.java
@@ -62,8 +62,8 @@ public interface MavenFileFilter
* Will return the default FileUtils.FilterWrappers
*
* <ul>
- * <li>interpolation with token ${ } and values from System.getProperties, project.getProperties and from filters.</li>
- * <li>interpolation with token @ @ and values from System.getProperties, project.getProperties and from filters.</li>
+ * <li>interpolation with token ${ } and values from System.getProperties, project.getProperties, from filters and project filters.</li>
+ * <li>interpolation with token @ @ and values from System.getProperties, project.getProperties, from filters and project filters.</li>
* <li>interpolation with token ${ } and values from mavenProject interpolation.</li>
* </ul>
*
diff --git a/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java b/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
index a6d9ef9..f398658 100755
--- a/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
+++ b/src/main/java/org/apache/maven/shared/filtering/ReflectionProperties.java
@@ -19,6 +19,7 @@ package org.apache.maven.shared.filtering;
* under the License.
*/
+import java.io.File;
import java.util.AbstractMap;
import java.util.Set;
@@ -58,24 +59,37 @@ public class ReflectionProperties
Object value = null;
try
{
- value = ReflectionValueExtractor.evaluate( "" + key , project );
+ value = ReflectionValueExtractor.evaluate( "" + key, project );
- if ( escapedBackslashesInFilePath && value != null &&
- "java.lang.String".equals( value.getClass().getName() ) )
+ if ( escapedBackslashesInFilePath && value != null
+ && "java.lang.String".equals( value.getClass().getName() ) )
{
String val = (String) value;
// Check if it's a windows path
if ( val.indexOf( ":\\" ) == 1 )
{
- value = StringUtils.replace( (String)value, "\\", "\\\\" );
- value = StringUtils.replace( (String)value, ":", "\\:" );
+ value = StringUtils.replace( (String) value, "\\", "\\\\" );
+ value = StringUtils.replace( (String) value, ":", "\\:" );
}
}
+ else if ( escapedBackslashesInFilePath && value != null
+ && File.class.getName().equals( value.getClass().getName() ) )
+ {
+ String val = ( (File) value ).getPath();
+ // Check if it's a windows path
+ if ( val.indexOf( ":\\" ) == 1 )
+ {
+ value = StringUtils.replace( (String) val, "\\", "\\\\" );
+ value = StringUtils.replace( (String) value, ":", "\\:" );
+ }
+ }
+
}
catch ( Exception e )
{
//TODO: remove the try-catch block when ReflectionValueExtractor.evaluate() throws no more exceptions
+ e.printStackTrace();
}
return value;
}
diff --git a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
index aacc834..10741e9 100755
--- a/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
+++ b/src/test/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFilteringTest.java
@@ -24,7 +24,6 @@ import java.util.List;
import java.util.Properties;
import org.apache.maven.model.Resource;
-import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.util.FileUtils;
@@ -55,12 +54,12 @@ public class DefaultMavenResourcesFilteringTest
public void testSimpleFiltering()
throws Exception
{
- StubMavenProject mavenProject = new StubMavenProject();
+ StubMavenProject mavenProject = new StubMavenProject( new File( getBasedir() ) );
mavenProject.setVersion( "1.0" );
mavenProject.setGroupId( "org.apache" );
Properties projectProperties = new Properties();
- projectProperties.put( "foo", "bar" );
+ projectProperties.put( "foo", "bar" );
mavenProject.setProperties( projectProperties );
MavenResourcesFiltering mavenResourcesFiltering = (MavenResourcesFiltering) lookup( MavenResourcesFiltering.class
.getName() );
@@ -82,12 +81,15 @@ public class DefaultMavenResourcesFilteringTest
assertEquals("1.0", result.get( "version" ));
assertEquals("org.apache", result.get( "groupId" ));
assertEquals("bar", result.get( "foo" ));
+ // FIXME this can fail with a windows path
+ String base = result.getProperty( "base" );
+ assertEquals(getBasedir(), base);
}
public void testNoFiltering()
throws Exception
{
- StubMavenProject mavenProject = new StubMavenProject();
+ StubMavenProject mavenProject = new StubMavenProject( new File( getBasedir() ) );
mavenProject.setVersion( "1.0" );
mavenProject.setGroupId( "org.apache" );
diff --git a/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java b/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
index b7ce5ab..2e3262c 100755
--- a/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
+++ b/src/test/java/org/apache/maven/shared/filtering/StubMavenProject.java
@@ -18,6 +18,7 @@
*/
package org.apache.maven.shared.filtering;
+import java.io.File;
import java.util.Properties;
import org.apache.maven.project.MavenProject;
@@ -31,7 +32,14 @@ public class StubMavenProject
extends MavenProject
{
private Properties properties;
+
+ private File basedir;
+ protected StubMavenProject (File basedir)
+ {
+ this.basedir = basedir;
+ }
+
public Properties getProperties()
{
return this.properties;
@@ -42,5 +50,10 @@ public class StubMavenProject
this.properties = properties;
}
+ public File getBasedir()
+ {
+ return basedir;
+ }
+
}
diff --git a/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt b/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
index 022a0a0..d5b56d1 100755
--- a/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
+++ b/src/test/units-files/maven-resources-filtering/maven-resources-filtering.txt
@@ -19,4 +19,5 @@
version=${pom.version}
groupId=${pom.groupId}
foo=${foo}
-none=none filtered
\ No newline at end of file
+none=none filtered
+base=${pom.basedir}
\ No newline at end of file