<!--
  ~ Copyright 2007 The Codehaus 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.
  -->

<configuration>
  <test>
    <value>foo</value>
    <number>1</number>
    <boolean>true</boolean>
    <interpolation>${test.value}/bar</interpolation>
  </test>
  <repository>${user.home}/.m2/repository</repository>
  <objects>
    <object>
      <foo>bar</foo>
    </object>
    <object>
      <foo>baz</foo>
    </object>
  </objects>
  <properties>
    <foo>bar</foo>
    <bar>baz</bar>
  </properties>
  <strings>
    <string>s1</string>
    <string>s2</string>
    <string>s3</string>
  </strings>
</configuration>
