Hi John, AFAIK current resources plugin trunk already depends about org.apache.maven.shared:maven-filtering:1.0-beta-3-SNAPSHOT
Thanks, -- Olivier 2009/8/19 <jdca...@apache.org>: > Author: jdcasey > Date: Wed Aug 19 21:53:17 2009 > New Revision: 805991 > > URL: http://svn.apache.org/viewvc?rev=805991&view=rev > Log: > [MRESOURCES-81] Adding a flag to enable/disable escaping windows paths when > filtering, then passing this on to the filtering wrappers directly, rather > than allowing the filtering components to create the default wrappers by > forcing windows-path-escaping. This can be simplified if the flag is passed > through the resources execution instance, but that will require a new release > of maven-filtering. > > Also adding unit tests for enabled and disabled path-escaping modes, along > with a new method to clean up a build environment on the project stub class. > > Modified: > > maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java > > maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java > > maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/stub/MavenProjectBuildStub.java > > Modified: > maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java > URL: > http://svn.apache.org/viewvc/maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java?rev=805991&r1=805990&r2=805991&view=diff > ============================================================================== > --- > maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java > (original) > +++ > maven/plugins/trunk/maven-resources-plugin/src/main/java/org/apache/maven/plugin/resources/ResourcesMojo.java > Wed Aug 19 21:53:17 2009 > @@ -30,6 +30,7 @@ > import org.apache.maven.plugin.AbstractMojo; > import org.apache.maven.plugin.MojoExecutionException; > import org.apache.maven.project.MavenProject; > +import org.apache.maven.shared.filtering.MavenFileFilter; > import org.apache.maven.shared.filtering.MavenFilteringException; > import org.apache.maven.shared.filtering.MavenResourcesExecution; > import org.apache.maven.shared.filtering.MavenResourcesFiltering; > @@ -132,6 +133,18 @@ > * @since 2.3 > */ > protected List nonFilteredFileExtensions; > + > + /** > + * Whether to escape backslashes and colons in windows-style paths. > + * @parameter expression="${maven.resources.escapeWindowsPaths} > default-value="false" > + * @since 2.4 > + */ > + protected boolean escapeWindowsPaths; > + > + /** > + * @component role-hint="default" > + */ > + private MavenFileFilter mavenFileFilter; > > public void execute() > throws MojoExecutionException > @@ -152,6 +165,13 @@ > > project, encoding, filters, > > Collections.EMPTY_LIST, > > session ); > + > + List filterWrappers = mavenFileFilter.getDefaultFilterWrappers( > project, filters, escapeWindowsPaths, > + > session, mavenResourcesExecution, null ); > + > + mavenResourcesExecution.setFilterWrappers( filterWrappers ); > + mavenResourcesExecution.setUseDefaultFilterWrappers( false ); > + > mavenResourcesExecution.setEscapeString( escapeString ); > mavenResourcesExecution.setOverwrite( overwrite ); > mavenResourcesExecution.setIncludeEmptyDirs( includeEmptyDirs ); > > Modified: > maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java > URL: > http://svn.apache.org/viewvc/maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java?rev=805991&r1=805990&r2=805991&view=diff > ============================================================================== > --- > maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java > (original) > +++ > maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/ResourcesMojoTest.java > Wed Aug 19 21:53:17 2009 > @@ -31,6 +31,7 @@ > import org.apache.maven.execution.MavenSession; > import org.apache.maven.plugin.resources.stub.MavenProjectResourcesStub; > import org.apache.maven.plugin.testing.AbstractMojoTestCase; > +import org.apache.maven.shared.filtering.MavenFileFilter; > import org.codehaus.plexus.util.FileUtils; > > public class ResourcesMojoTest > @@ -40,7 +41,7 @@ > > /** > * test mojo lookup, test harness should be working fine > - * > + * > * @throws Exception > */ > public void testHarnessEnvironment() > @@ -310,12 +311,13 @@ > project.setResourceFiltering( 0, true ); > project.setupBuildEnvironment(); > > - //setVariableValueToObject(mojo,"encoding","UTF-8"); > + // setVariableValueToObject(mojo,"encoding","UTF-8"); > setVariableValueToObject( mojo, "project", project ); > setVariableValueToObject( mojo, "resources", resources ); > setVariableValueToObject( mojo, "outputDirectory", new File( > project.getBuild().getOutputDirectory() ) ); > setVariableValueToObject( mojo, "filters", new LinkedList() ); > - MavenSession mavenSession = new MavenSession( null, null, null, > null, null, null, null, System.getProperties(), null ); > + MavenSession mavenSession = new MavenSession( null, null, null, > null, null, null, null, System.getProperties(), > + null ); > setVariableValueToObject( mojo, "session", mavenSession ); > mojo.execute(); > > @@ -323,7 +325,7 @@ > > File userDir = new File( System.getProperty( "user.dir" ) ); > assertTrue( userDir.exists() ); > - > + > Properties props = new Properties(); > props.load( new FileInputStream( new File( resourcesDir + > "/file4.txt" ) ) ); > File fileFromFiltering = new File( props.getProperty( > "current-working-directory" ) ); > @@ -349,7 +351,7 @@ > project.addProperty( "user.dir", "FPJ kami!!!" ); > project.setupBuildEnvironment(); > > - //setVariableValueToObject(mojo,"encoding","UTF-8"); > + // setVariableValueToObject(mojo,"encoding","UTF-8"); > setVariableValueToObject( mojo, "project", project ); > setVariableValueToObject( mojo, "resources", resources ); > setVariableValueToObject( mojo, "outputDirectory", new File( > project.getBuild().getOutputDirectory() ) ); > @@ -370,8 +372,8 @@ > { > File testPom = new File( getBasedir(), defaultPomFilePath ); > ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", testPom > ); > - MavenProjectResourcesStub project = > - new MavenProjectResourcesStub( > "resourcePojectProperty_Filtering_PropertyDestination" ); > + MavenProjectResourcesStub project = new MavenProjectResourcesStub( > + > "resourcePojectProperty_Filtering_PropertyDestination" ); > List resources = project.getBuild().getResources(); > > assertNotNull( mojo ); > @@ -383,7 +385,7 @@ > // setup dummy property > project.setDescription( "c:\\\\org\\apache\\test" ); > > - //setVariableValueToObject(mojo,"encoding","UTF-8"); > + // setVariableValueToObject(mojo,"encoding","UTF-8"); > setVariableValueToObject( mojo, "project", project ); > setVariableValueToObject( mojo, "resources", resources ); > setVariableValueToObject( mojo, "outputDirectory", new File( > project.getBuild().getOutputDirectory() ) ); > @@ -416,7 +418,7 @@ > project.setupBuildEnvironment(); > filterList.add( project.getResourcesDirectory() + "filter.properties" > ); > > - //setVariableValueToObject(mojo,"encoding","UTF-8"); > + // setVariableValueToObject(mojo,"encoding","UTF-8"); > setVariableValueToObject( mojo, "project", project ); > setVariableValueToObject( mojo, "resources", resources ); > setVariableValueToObject( mojo, "outputDirectory", new File( > project.getBuild().getOutputDirectory() ) ); > @@ -430,41 +432,157 @@ > } > > /** > - * Validates that a Filter token containing a project property will be > - * resolved before the Filter is applied to the resources. > - * > + * Validates that a Filter token containing a project property will be > resolved before the Filter is applied to the > + * resources. > + * > * @throws Exception > */ > public void testPropertyFiles_Filtering_TokensInFilters() > throws Exception > { > - final File testPom = new File(getBasedir(), defaultPomFilePath); > - final ResourcesMojo mojo = (ResourcesMojo) lookupMojo("resources", > testPom); > + final File testPom = new File( getBasedir(), defaultPomFilePath ); > + final ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", > testPom ); > final MavenProjectResourcesStub project = new > MavenProjectResourcesStub( > - "resourcePropertyFiles_Filtering_TokensInFilters"); > + > "resourcePropertyFiles_Filtering_TokensInFilters" ); > final List resources = project.getBuild().getResources(); > final LinkedList filterList = new LinkedList(); > > - assertNotNull(mojo); > + assertNotNull( mojo ); > > - project.addFile("file4.properties", "current working > directory=${filter.token}"); > - project.addFile("filter.properties", "filter.token=${pom-property}"); > - project.setResourceFiltering(0, true); > - project.addProperty("pom-property", "foobar"); > + project.addFile( "file4.properties", "current working > directory=${filter.token}" ); > + project.addFile( "filter.properties", "filter.token=${pom-property}" > ); > + project.setResourceFiltering( 0, true ); > + project.addProperty( "pom-property", "foobar" ); > project.setupBuildEnvironment(); > - filterList.add(project.getResourcesDirectory() + > "filter.properties"); > + filterList.add( project.getResourcesDirectory() + > "filter.properties" ); > > // setVariableValueToObject(mojo,"encoding","UTF-8"); > - setVariableValueToObject(mojo, "project", project); > - setVariableValueToObject(mojo, "resources", resources); > - setVariableValueToObject(mojo, "outputDirectory", new File( > project.getBuild().getOutputDirectory() ) ); > - setVariableValueToObject(mojo, "filters", filterList); > + setVariableValueToObject( mojo, "project", project ); > + setVariableValueToObject( mojo, "resources", resources ); > + setVariableValueToObject( mojo, "outputDirectory", new File( > project.getBuild().getOutputDirectory() ) ); > + setVariableValueToObject( mojo, "filters", filterList ); > mojo.execute(); > final String resourcesDir = project.getOutputDirectory(); > - > + > final String checkString = "current working directory=foobar"; > > - assertContent(resourcesDir + "/file4.properties", checkString); > + assertContent( resourcesDir + "/file4.properties", checkString ); > + } > + > + public void testWindowsPathEscapingDisabled() > + throws Exception > + { > + File testPom = new File( getBasedir(), defaultPomFilePath ); > + ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", > testPom ); > + MavenProjectResourcesStub project = new MavenProjectResourcesStub( > "windows-paths" ); > + List resources = project.getBuild().getResources(); > + > + assertNotNull( mojo ); > + > + project.getProperties().setProperty( "basePath", > "C:\\Users\\Administrator" ); > + project.getProperties().setProperty( "docsPath", > "${basePath}\\Documents" ); > + > + project.addFile( "path-listing.txt", "base path is > ${basePath}\ndocuments path is ${docsPath}" ); > + project.setResourceFiltering( 0, true ); > + > + project.cleanBuildEnvironment(); > + project.setupBuildEnvironment(); > + > + setVariableValueToObject( mojo, "project", project ); > + setVariableValueToObject( mojo, "resources", resources ); > + setVariableValueToObject( mojo, "outputDirectory", new File( > project.getBuild().getOutputDirectory() ) ); > + setVariableValueToObject( mojo, "filters", new LinkedList() ); > + > + MavenFileFilter mff = null; > + try > + { > + mff = (MavenFileFilter) lookup( MavenFileFilter.class.getName(), > "default" ); > + setVariableValueToObject( mojo, "mavenFileFilter", mff ); > + > + setVariableValueToObject( mojo, "escapeWindowsPaths", > Boolean.FALSE ); > + > + mojo.execute(); > + } > + finally > + { > + if ( mff != null ) > + { > + try > + { > + release( mff ); > + } > + catch ( Exception e ) > + { > + } > + } > + } > + > + String resourcesDir = project.getOutputDirectory(); > + > + assertTrue( FileUtils.fileExists( new File( resourcesDir, > "path-listing.txt" ).getAbsolutePath() ) ); > + > + assertEquals( "base path is C:\\Users\\Administrator\ndocuments path > is C:\\Users\\Administrator\\Documents", > + FileUtils.fileRead( new File( resourcesDir, > "path-listing.txt" ) ) ); > + } > + > + public void testWindowsPathEscapingEnabled() > + throws Exception > + { > + File testPom = new File( getBasedir(), defaultPomFilePath ); > + ResourcesMojo mojo = (ResourcesMojo) lookupMojo( "resources", > testPom ); > + MavenProjectResourcesStub project = new MavenProjectResourcesStub( > "windows-paths" ); > + List resources = project.getBuild().getResources(); > + > + assertNotNull( mojo ); > + > + project.getProperties().setProperty( "basePath", > "C:\\Users\\Administrator" ); > + project.getProperties().setProperty( "docsPath", > "${basePath}\\Documents" ); > + > + project.addFile( "path-listing.txt", "base path is > ${basePath}\ndocuments path is ${docsPath}" ); > + project.setResourceFiltering( 0, true ); > + > + project.cleanBuildEnvironment(); > + project.setupBuildEnvironment(); > + > + setVariableValueToObject( mojo, "project", project ); > + setVariableValueToObject( mojo, "resources", resources ); > + setVariableValueToObject( mojo, "outputDirectory", new File( > project.getBuild().getOutputDirectory() ) ); > + setVariableValueToObject( mojo, "filters", new LinkedList() ); > + > + MavenFileFilter mff = null; > + try > + { > + mff = (MavenFileFilter) lookup( MavenFileFilter.class.getName(), > "default" ); > + setVariableValueToObject( mojo, "mavenFileFilter", mff ); > + > + setVariableValueToObject( mojo, "escapeWindowsPaths", > Boolean.TRUE ); > + > + mojo.execute(); > + } > + finally > + { > + if ( mff != null ) > + { > + try > + { > + release( mff ); > + } > + catch ( Exception e ) > + { > + } > + } > + } > + > + String resourcesDir = project.getOutputDirectory(); > + > + assertTrue( FileUtils.fileExists( new File( resourcesDir, > "path-listing.txt" ).getAbsolutePath() ) ); > + > + // FIXME See http://jira.codehaus.org/browse/MSHARED-121 > +// assertEquals( "base path is > C:\\\\Users\\\\Administrator\ndocuments path is > C:\\\\Users\\\\Administrator\\\\Documents", > +// FileUtils.fileRead( new File( resourcesDir, > "path-listing.txt" ) ) ); > + > + assertEquals( "base path is C:\\\\Users\\\\Administrator\ndocuments > path is C:\\\\Users\\\\Administrator\\Documents", > + FileUtils.fileRead( new File( resourcesDir, > "path-listing.txt" ) ) ); > } > > /** > > Modified: > maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/stub/MavenProjectBuildStub.java > URL: > http://svn.apache.org/viewvc/maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/stub/MavenProjectBuildStub.java?rev=805991&r1=805990&r2=805991&view=diff > ============================================================================== > --- > maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/stub/MavenProjectBuildStub.java > (original) > +++ > maven/plugins/trunk/maven-resources-plugin/src/test/java/org/apache/maven/plugin/resources/stub/MavenProjectBuildStub.java > Wed Aug 19 21:53:17 2009 > @@ -161,6 +161,30 @@ > build.setOutputDirectory( outputDirectory ); > build.setTestOutputDirectory( testOutputDirectory ); > } > + > + public void cleanBuildEnvironment() > + throws Exception > + { > + if ( FileUtils.fileExists( resourcesDirectory ) ) > + { > + FileUtils.deleteDirectory( resourcesDirectory ); > + } > + > + if ( FileUtils.fileExists( testResourcesDirectory ) ) > + { > + FileUtils.deleteDirectory( testResourcesDirectory ); > + } > + > + if ( FileUtils.fileExists( outputDirectory ) ) > + { > + FileUtils.deleteDirectory( outputDirectory ); > + } > + > + if ( FileUtils.fileExists( testOutputDirectory ) ) > + { > + FileUtils.deleteDirectory( testOutputDirectory ); > + } > + } > > public void setupBuildEnvironment() > throws Exception > > > -- Olivier --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org For additional commands, e-mail: dev-h...@maven.apache.org