<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  <modelVersion>4.0.0</modelVersion>  
  <groupId>org.apache.maven.dotnet</groupId>  
  <artifactId>dotnet-project</artifactId>  
  <packaging>pom</packaging>  
  <version>0.14-incubating-SNAPSHOT</version>  
  <name>dotnet</name>  
  <mailingLists> 
    <mailingList> 
      <name>NMaven Dev List</name>  
      <subscribe>nmaven-dev-subscribe@incubator.apache.org</subscribe>  
      <unsubscribe>nmaven-dev-unsubscribe@incubator.apache.org</unsubscribe>  
      <post>nmaven-dev@incubator.apache.org</post>  
      <archive>http://mail-archives.apache.org/mod_mbox/incubator-nmaven-dev/</archive>  
      <otherArchives> 
        <otherArchive>http://www.nabble.com/nmaven-dev-f17655.html</otherArchive> 
      </otherArchives> 
    </mailingList>  
    <mailingList> 
      <name>NMaven Commits List</name>  
      <subscribe>nmaven-commits-subscribe@incubator.apache.org</subscribe>  
      <unsubscribe>nmaven-commits-unsubscribe@incubator.apache.org</unsubscribe>  
      <post>nmaven-commits@incubator.apache.org</post>  
      <archive>http://mail-archives.apache.org/mod_mbox/incubator-nmaven-commits/</archive>  
      <otherArchives> 
        <otherArchive>http://www.nabble.com/nmaven-commits-f17656.html</otherArchive> 
      </otherArchives> 
    </mailingList> 
  </mailingLists>  
  <scm> 
    <url>https://svn.apache.org/repos/asf/incubator/nmaven/</url>  
    <connection>scm:svn:https://svn.apache.org/repos/asf/incubator/nmaven/</connection>  
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/nmaven/</developerConnection>  
    <tag>REL_0_14_SNAPSHOT</tag> 
  </scm>  
  <organization> 
    <name>NMaven</name>  
    <url>http://incubator.apache.org/nmaven</url> 
  </organization>  
  <issueManagement> 
    <system>JIRA Bugtracking</system>  
    <url>http://jira.codehaus.org/browse/NMAVEN</url> 
  </issueManagement>  
  <licenses> 
    <license> 
      <name>Apache 2.0</name>  
      <url>LICENSE.txt</url> 
    </license> 
  </licenses>  
  <developers> 
    <developer> 
      <name>Brett Porter</name>  
      <id>brett</id>  
      <email>brett@apache.org</email>  
      <roles> 
        <role>champion</role>  
        <role>mentor</role> 
      </roles> 
    </developer>  
    <developer> 
      <name>Jason van Zyl</name>  
      <id>jvanzyl</id>  
      <email>jvanzyl@apache.org</email>  
      <roles> 
        <role>champion</role>  
        <role>mentor</role> 
      </roles> 
    </developer>  
    <developer> 
      <name>Shane Isbell</name>  
      <id>sisbell</id>  
      <email>sisbell@apache.org</email>  
      <url>http://jroller.com/page/random7</url>  
      <roles> 
        <role>committer</role> 
      </roles> 
    </developer>  
    <developer> 
      <name>Dan Fabulich</name>  
      <id>dfabulich</id>  
      <email>dfabulich@apache.org</email>  
      <roles> 
        <role>committer</role> 
      </roles> 
    </developer>  
    <developer> 
      <name>Chris Stevenson</name>  
      <id>chrisjs</id>  
      <email>chrisjs@apache.org</email>  
      <roles> 
        <role>committer</role> 
      </roles> 
    </developer>  
    <developer> 
      <name>Trygve Laugstol</name>  
      <id>trygvis</id>  
      <email>trygvis@apache.org</email>  
      <roles> 
        <role>committer</role> 
      </roles> 
    </developer>  
    <developer> 
      <name>James Strachan</name>  
      <id>jstrachan</id>  
      <email>jstrachan@apache.org</email>  
      <roles> 
        <role>committer</role> 
      </roles> 
    </developer> 
  </developers>  
  <modules> 
    <module>components</module>  
    <module>archetypes</module>  
    <module>plugins</module>  
  </modules>  
  <repositories> 
    <repository> 
      <id>apache.org</id>  
      <name>Maven Snapshots</name>  
      <url>http://people.apache.org/repo/m2-snapshot-repository</url>  
      <releases> 
        <enabled>false</enabled> 
      </releases>  
      <snapshots> 
        <enabled>true</enabled> 
      </snapshots> 
    </repository>  
    <repository> 
      <id>codehaus-snapshot-repo</id>  
      <name>Codehaus Snapshot Repo</name>  
      <url>http://snapshots.repository.codehaus.org</url>  
      <releases> 
        <enabled>false</enabled> 
      </releases> 
    </repository> 
  </repositories>  
  <build> 
    <extensions> 
      <extension> 
        <groupId>org.apache.maven.wagon</groupId>  
        <artifactId>wagon-ssh-external</artifactId>  
        <version>1.0-beta-2</version> 
      </extension>  
      <extension> 
        <groupId>org.apache.maven.wagon</groupId>  
        <artifactId>wagon-webdav</artifactId>  
        <version>1.0-beta-2</version> 
      </extension> 
    </extensions>  
    <plugins> 
      <plugin> 
        <artifactId>maven-javadoc-plugin</artifactId>  
        <configuration> 
          <aggregate>true</aggregate> 
        </configuration> 
      </plugin>  
      <plugin> 
        <artifactId>maven-assembly-plugin</artifactId>  
        <inherited>false</inherited>  
        <configuration> 
          <descriptor>src/assembly/src.xml</descriptor>  
          <outputDirectory>target</outputDirectory> 
          <finalName>nmaven</finalName>
        </configuration> 
        <executions> 
          <execution> 
            <id>make-assembly</id>  
            <phase>package</phase>  
            <goals> 
              <goal>single</goal> 
            </goals> 
          </execution> 
        </executions> 
      </plugin>  
      <plugin> 
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-compiler-plugin</artifactId>  
        <configuration> 
          <source>1.5</source>  
          <target>1.5</target> 
        </configuration> 
      </plugin> 
    </plugins>  
    <pluginManagement> 
      <plugins> 
        <plugin> 
          <groupId>org.codehaus.modello</groupId>  
          <artifactId>modello-maven-plugin</artifactId>  
          <version>1.0-alpha-13</version>  
          <executions> 
            <execution> 
              <goals> 
                <goal>xpp3-reader</goal>  
                <goal>java</goal> 
              </goals> 
            </execution>  
            <execution> 
              <id>site</id>  
              <phase>pre-site</phase>  
              <goals> 
                <goal>xdoc</goal> 
              </goals> 
            </execution> 
          </executions> 
        </plugin> 
      </plugins> 
    </pluginManagement> 
  </build>  
  <dependencies> 
    <dependency> 
      <groupId>org.easymock</groupId>  
      <artifactId>easymock</artifactId>  
      <version>2.0</version>  
      <scope>test</scope> 
    </dependency>  
    <dependency> 
      <groupId>junit</groupId>  
      <artifactId>junit</artifactId>  
      <version>3.8.1</version>  
      <scope>test</scope> 
    </dependency> 
  </dependencies>  
  <properties> 
    <mavenVersion>2.0.9</mavenVersion>  
    <jettyVersion>6.1.5</jettyVersion>  
    <xfireVersion>1.2.5</xfireVersion> 
  </properties>  
  <dependencyManagement> 
    <dependencies> 
      <dependency> 
        <groupId>org.apache.maven</groupId>  
        <artifactId>maven-project</artifactId>  
        <version>${mavenVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>org.apache.maven</groupId>  
        <artifactId>maven-core</artifactId>  
        <version>${mavenVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>org.apache.maven</groupId>  
        <artifactId>maven-artifact</artifactId>  
        <version>${mavenVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>org.apache.maven</groupId>  
        <artifactId>maven-plugin-api</artifactId>  
        <version>${mavenVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>org.codehaus.xfire</groupId>  
        <artifactId>xfire-plexus</artifactId>  
        <version>${xfireVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>org.codehaus.xfire</groupId>  
        <artifactId>xfire-java5</artifactId>  
        <version>${xfireVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>org.mortbay.jetty</groupId>  
        <artifactId>jetty</artifactId>  
        <version>${jettyVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>org.mortbay.jetty</groupId>  
        <artifactId>jetty-embedded</artifactId>  
        <version>${jettyVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>org.mortbay.jetty</groupId>  
        <artifactId>servlet-api-2.5</artifactId>  
        <version>${jettyVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>net.sf.kxml</groupId>  
        <artifactId>kxml2</artifactId>  
        <version>2.1.8</version> 
      </dependency>  
      <dependency> 
        <groupId>xmlpull</groupId>  
        <artifactId>xmlpull</artifactId>  
        <version>1.1.3.4a</version> 
      </dependency>  
      <dependency> 
        <groupId>org.codehaus.plexus</groupId>  
        <artifactId>plexus-archiver</artifactId>  
        <version>1.0-alpha-9</version> 
      </dependency>  
      <dependency> 
        <groupId>org.codehaus.plexus</groupId>  
        <artifactId>plexus-utils</artifactId>  
        <version>1.4.5</version> 
      </dependency>  
      <dependency> 
        <groupId>org.codehaus.plexus</groupId>  
        <artifactId>plexus-container-default</artifactId>  
        <version>1.0-alpha-32</version> 
      </dependency>  
      <dependency> 
        <groupId>org.codehaus.plexus</groupId>  
        <artifactId>plexus-component-api</artifactId>  
        <version>1.0-alpha-32</version> 
      </dependency>  
      <dependency> 
        <groupId>org.codehaus.plexus</groupId>  
        <artifactId>plexus-classworlds</artifactId>  
        <version>1.2-alpha-10</version> 
      </dependency> 
    </dependencies> 
  </dependencyManagement>  
  <!--
    <distributionManagement>
      <snapshotRepository>
        <id>nmaven</id>
        <name>Apache Development Snapshot Repository</name>
        <url>scpexe://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</url>
      </snapshotRepository>
    </distributionManagement>
  -->  
  <!--
   <distributionManagement>
   <snapshotRepository>
     <id>test</id>
     <name>Apache Development Snapshot Repository</name>
     <url>file://C:\arepo</url>
   </snapshotRepository>
  </distributionManagement>
  --> 
</project>
