<?xml version='1.0' encoding='UTF-8'?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ecbrodie</groupId>
  <artifactId>MWAR-311</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>Maven War Plugin Bug</name>
  <description>Filtering of properties files (as a web resource) broken in maven-war-plugin version 2.4.</description>
  <packaging>war</packaging>
  
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  	<my.maven.property>foo foo</my.maven.property>
  </properties>
  
  <build>
  	<filters>
  		<filter>src/main/resources/default.properties</filter>
  	</filters>
  	<resources>
  		<resource>
  			<directory>src/main/resources</directory>
  			<filtering>true</filtering>
  		</resource>
  	</resources>
  	<plugins>
  		<plugin>
  			<groupId>@project.groupId@</groupId>
  			<artifactId>@project.artifactId@</artifactId>
        <version>@project.version@</version>
  			<configuration>
				<webResources>
					<resource>
						<directory>src/main/resources</directory>
						<filtering>true</filtering>
						<includes>
							<include>**/app.properties</include>
						</includes>
					</resource>
				</webResources>
				<archiveClasses>true</archiveClasses>
			</configuration>
  		</plugin>
  	</plugins>
  </build>
</project>
