<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~ Copyright 2005-2006 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.
  -->

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId><![CDATA[groupId]]></groupId>
  <artifactId><![CDATA[artifactId]]></artifactId>
  <version><![CDATA[1.0-SNAPSHOT]]></version>
  <packaging>pom</packaging>

  <scm>
    <connection><![CDATA[scm:svn:file://localhost/tmp/scm-repo/branches/release-label]]></connection>
    <developerConnection><![CDATA[scm:svn:file://localhost/tmp/scm-repo/branches/release-label]]></developerConnection>
    <url><![CDATA[file://localhost/tmp/scm-repo/branches/release-label]]></url>
  </scm>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId><![CDATA[groupId]]></groupId>
        <artifactId><![CDATA[subproject1]]></artifactId>
        <version><![CDATA[2.0-SNAPSHOT]]></version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId><![CDATA[groupId]]></groupId>
          <artifactId><![CDATA[subproject1]]></artifactId>
          <version><![CDATA[2.0-SNAPSHOT]]></version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <modules>
    <module>subproject1</module>
    <module>subproject2</module>
  </modules>
</project>
