PR: MNG-788

add filtering to the build element


git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@290877 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2005-09-22 02:52:39 +00:00
parent e4248472d6
commit cbcf2d48e1
17 changed files with 199 additions and 10 deletions

View File

@ -150,6 +150,8 @@ it0053: Test that attached artifacts have the same buildnumber and timestamp
as the main artifact. This will not correctly verify until we have as the main artifact. This will not correctly verify until we have
some way to pattern-match the buildnumber/timestamp... some way to pattern-match the buildnumber/timestamp...
it0054: Test resource filtering.
it0055: Test that source includes/excludes with in the compiler plugin config. it0055: Test that source includes/excludes with in the compiler plugin config.
This will test excludes and testExcludes... This will test excludes and testExcludes...
@ -191,7 +193,6 @@ it0067: Test activation of a profile from the command line.
- generated sources - generated sources
- generated resources from sources - generated resources from sources
- generated resources from generated sources - generated resources from generated sources
- filtered resources
- build that requires a plugin download - build that requires a plugin download
- transitive dependencies - transitive dependencies
- goal attainment not requiring depedency resolution - goal attainment not requiring depedency resolution

View File

@ -11,6 +11,7 @@ it0058
it0057 it0057
it0056 it0056
it0055 it0055
it0054
it0053 it0053
it0052 it0052
it0051 it0051

View File

@ -0,0 +1,4 @@
target/classes/org/apache/maven/it0054/Person.class
target/test-classes/org/apache/maven/it0054/PersonTest.class
target/maven-core-it0054-1.0.jar
target/maven-core-it0054-1.0.jar!/it0054.properties

View File

@ -0,0 +1 @@
package

View File

@ -0,0 +1,27 @@
<model>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core-it0054</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<type>jar</type>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<filters>
<filter>src/main/filters/filters.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</model>

View File

@ -0,0 +1,2 @@
surname = van zyl
country = Canada

View File

@ -0,0 +1,16 @@
package org.apache.maven.it0054;
public class Person
{
private String name;
public void setName( String name )
{
this.name = name;
}
public String getName()
{
return name;
}
}

View File

@ -0,0 +1,3 @@
name = jason
surname = ${surname}
country = @country@

View File

@ -0,0 +1,24 @@
package org.apache.maven.it0054;
import java.util.Properties;
import junit.framework.TestCase;
public class PersonTest
extends TestCase
{
public void testPerson()
throws Exception
{
Person person = new Person();
person.setName( "foo" );
assertEquals( "foo", person.getName() );
Properties p = new Properties();
p.load( getClass().getResourceAsStream( "/it0054.properties" ) );
assertEquals( "check name", "jason", p.getProperty( "name" ) );
assertEquals( "check surname", "van zyl", p.getProperty( "surname" ) );
assertEquals( "check country", "Canada", p.getProperty( "country" ) );
}
}

View File

@ -856,6 +856,17 @@
]]></description> ]]></description>
<type>String</type> <type>String</type>
</field> </field>
<field>
<name>filters</name>
<version>4.0.0</version>
<description><![CDATA[
The list of filter properties files that are used when filtering is enabled.
]]></description>
<association>
<type>String</type>
<multiplicity>*</multiplicity>
</association>
</field>
</fields> </fields>
</class> </class>
<class> <class>

View File

@ -2,7 +2,7 @@
<parent> <parent>
<artifactId>maven-plugin-parent</artifactId> <artifactId>maven-plugin-parent</artifactId>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<version>2.0-beta-1</version> <version>2.0-beta-2-SNAPSHOT</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
@ -31,4 +31,4 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -9,6 +9,9 @@
<packaging>maven-plugin</packaging> <packaging>maven-plugin</packaging>
<name>Maven Resources Plugin</name> <name>Maven Resources Plugin</name>
<version>2.0-beta-2-SNAPSHOT</version> <version>2.0-beta-2-SNAPSHOT</version>
<prerequisites>
<maven>2.0-beta-2-SNAPSHOT</maven>
</prerequisites>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.apache.maven</groupId> <groupId>org.apache.maven</groupId>
@ -22,7 +25,7 @@
<dependency> <dependency>
<groupId>org.apache.maven</groupId> <groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId> <artifactId>maven-model</artifactId>
<version>2.0-beta-1</version> <version>2.0-beta-2-SNAPSHOT</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -69,13 +69,15 @@ public class ResourcesMojo
* Wheter to apply filters during transfer. * Wheter to apply filters during transfer.
* *
* @parameter * @parameter
* @deprecated
*/ */
private boolean filtering = false; private boolean filtering = true;
/** /**
* The name of the filter property file to use. * The name of the filter property file to use.
* *
* @parameter expression="${basedir}/filter.properties" * @parameter expression="${basedir}/filter.properties"
* @deprecated use the filters section of the POM.
*/ */
private File filterPropertiesFile; private File filterPropertiesFile;
@ -92,6 +94,11 @@ public class ResourcesMojo
private static final String[] DEFAULT_INCLUDES = {"**/**"}; private static final String[] DEFAULT_INCLUDES = {"**/**"};
/**
* @parameter expression="${project.build.filters}"
*/
private List filters;
public void execute() public void execute()
throws MojoExecutionException throws MojoExecutionException
{ {
@ -173,13 +180,34 @@ public class ResourcesMojo
{ {
if ( filtering ) if ( filtering )
{ {
try if ( filters == null || filters.isEmpty() && filterPropertiesFile.exists() )
{ {
filterProperties = PropertyUtils.loadPropertyFile( filterPropertiesFile, true, true ); // Deprecated - remove
try
{
filterProperties = PropertyUtils.loadPropertyFile( filterPropertiesFile, true, true );
}
catch ( IOException e )
{
throw new MojoExecutionException( "Error loading property file '" + filterPropertiesFile + "'", e );
}
} }
catch ( IOException e ) else
{ {
throw new MojoExecutionException( "Error loading property file '" + filterPropertiesFile + "'", e ); filterProperties = new Properties();
for ( Iterator i = filters.iterator(); i.hasNext(); )
{
String filtersfile = (String) i.next();
try
{
Properties properties = PropertyUtils.loadPropertyFile( new File( filtersfile ), true, true );
filterProperties.putAll( properties );
}
catch ( IOException e )
{
throw new MojoExecutionException( "Error loading property file '" + filtersfile + "'", e );
}
}
} }
} }
} }

View File

@ -1440,4 +1440,8 @@ public class MavenProject
return getModel().getProperties(); return getModel().getProperties();
} }
public List getFilters()
{
return getBuild().getFilters();
}
} }

View File

@ -113,6 +113,18 @@ public class DefaultProfileInjector
modelBuild.setTestResources( profileTestResources ); modelBuild.setTestResources( profileTestResources );
} }
if ( profileBuild.getFilters() != null )
{
if ( modelBuild.getFilters() == null )
{
modelBuild.setFilters( profileBuild.getFilters() );
}
else
{
modelBuild.getFilters().addAll( profileBuild.getFilters() );
}
}
injectPlugins( profileBuild, modelBuild ); injectPlugins( profileBuild, modelBuild );
// Plugin management :: aggregate // Plugin management :: aggregate

View File

@ -1,5 +1,21 @@
package org.apache.maven.project.overlay; package org.apache.maven.project.overlay;
/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.maven.model.Build; import org.apache.maven.model.Build;
import org.apache.maven.model.Extension; import org.apache.maven.model.Extension;
import org.apache.maven.model.Plugin; import org.apache.maven.model.Plugin;
@ -10,6 +26,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/**
* @todo why delegate? this is asking for trouble when there are additions.
*/
public class BuildOverlay public class BuildOverlay
extends Build extends Build
{ {
@ -234,4 +253,23 @@ public class BuildOverlay
return build.toString(); return build.toString();
} }
public void addFilter( String string )
{
build.addFilter( string );
} //-- void addFilter(String)
public List getFilters()
{
return build.getFilters();
} //-- java.util.List getFilters()
public void removeFilter( String string )
{
build.removeFilter( string );
} //-- void removeFilter(String)
public void setFilters( List filters )
{
build.setFilters( filters );
} //-- void setFilters(java.util.List)
} }

View File

@ -22,6 +22,8 @@ import org.apache.maven.model.Resource;
import java.io.File; import java.io.File;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
public class DefaultPathTranslator public class DefaultPathTranslator
implements PathTranslator implements PathTranslator
@ -56,6 +58,18 @@ public class DefaultPathTranslator
resource.setDirectory( alignToBaseDirectory( resource.getDirectory(), basedir ) ); resource.setDirectory( alignToBaseDirectory( resource.getDirectory(), basedir ) );
} }
if ( build.getFilters() != null )
{
List filters = new ArrayList();
for ( Iterator i = build.getFilters().iterator(); i.hasNext(); )
{
String filter = (String) i.next();
filters.add( alignToBaseDirectory( filter, basedir ) );
}
build.setFilters( filters );
}
build.setOutputDirectory( alignToBaseDirectory( build.getOutputDirectory(), basedir ) ); build.setOutputDirectory( alignToBaseDirectory( build.getOutputDirectory(), basedir ) );
build.setTestOutputDirectory( alignToBaseDirectory( build.getTestOutputDirectory(), basedir ) ); build.setTestOutputDirectory( alignToBaseDirectory( build.getTestOutputDirectory(), basedir ) );