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
some way to pattern-match the buildnumber/timestamp...
it0054: Test resource filtering.
it0055: Test that source includes/excludes with in the compiler plugin config.
This will test excludes and testExcludes...
@ -191,7 +193,6 @@ it0067: Test activation of a profile from the command line.
- generated sources
- generated resources from sources
- generated resources from generated sources
- filtered resources
- build that requires a plugin download
- transitive dependencies
- goal attainment not requiring depedency resolution

View File

@ -11,6 +11,7 @@ it0058
it0057
it0056
it0055
it0054
it0053
it0052
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>
<type>String</type>
</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>
</class>
<class>

View File

@ -2,7 +2,7 @@
<parent>
<artifactId>maven-plugin-parent</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>2.0-beta-1</version>
<version>2.0-beta-2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.plugins</groupId>

View File

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

View File

@ -69,13 +69,15 @@ public class ResourcesMojo
* Wheter to apply filters during transfer.
*
* @parameter
* @deprecated
*/
private boolean filtering = false;
private boolean filtering = true;
/**
* The name of the filter property file to use.
*
* @parameter expression="${basedir}/filter.properties"
* @deprecated use the filters section of the POM.
*/
private File filterPropertiesFile;
@ -92,6 +94,11 @@ public class ResourcesMojo
private static final String[] DEFAULT_INCLUDES = {"**/**"};
/**
* @parameter expression="${project.build.filters}"
*/
private List filters;
public void execute()
throws MojoExecutionException
{
@ -173,6 +180,9 @@ public class ResourcesMojo
{
if ( filtering )
{
if ( filters == null || filters.isEmpty() && filterPropertiesFile.exists() )
{
// Deprecated - remove
try
{
filterProperties = PropertyUtils.loadPropertyFile( filterPropertiesFile, true, true );
@ -182,6 +192,24 @@ public class ResourcesMojo
throw new MojoExecutionException( "Error loading property file '" + filterPropertiesFile + "'", e );
}
}
else
{
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 );
}
}
}
}
}
private void copyFile( File from, File to, boolean filtering )

View File

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

View File

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

View File

@ -1,5 +1,21 @@
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.Extension;
import org.apache.maven.model.Plugin;
@ -10,6 +26,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @todo why delegate? this is asking for trouble when there are additions.
*/
public class BuildOverlay
extends Build
{
@ -234,4 +253,23 @@ public class BuildOverlay
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.util.Iterator;
import java.util.List;
import java.util.ArrayList;
public class DefaultPathTranslator
implements PathTranslator
@ -56,6 +58,18 @@ public class DefaultPathTranslator
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.setTestOutputDirectory( alignToBaseDirectory( build.getTestOutputDirectory(), basedir ) );