<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>  
  <groupId>npanday</groupId>  
  <artifactId>npanday-project</artifactId>  
  <packaging>pom</packaging>  
  <version>1.1</version>  
  <name>NPanday</name>  
  <url>http://www.codeplex.com/npanday</url>  
  <description>NPanday provides Maven plugins to support building of .NET applications</description>  
  <mailingLists> 
    <mailingList> 
      <name>NPanday Discussion List</name>  
      <post>npanday@discussions.codeplex.com</post>  
      <otherArchives> 
        <otherArchive>http://n2.nabble.com/NPanday-Discussions-f1657131.html</otherArchive> 
      </otherArchives> 
    </mailingList>  
  </mailingLists>
  <scm> 
    <connection>scm:svn:https://npanday.svn.codeplex.com/svn/releases/npanday-project-1.1</connection>
    <developerConnection>scm:svn:https://npanday.svn.codeplex.com/svn/releases/npanday-project-1.1</developerConnection>
    <url>https://npanday.svn.codeplex.com/svn/releases/npanday-project-1.1</url>
  </scm>  
  <organization> 
    <name>NPanday</name>  
    <url>http://www.codeplex.com/npanday</url> 
  </organization>  
  <issueManagement> 
    <system>Codeplex Issue Tracker</system>  
    <url>http://www.codeplex.com/npanday/WorkItem/List.aspx</url> 
  </issueManagement>  
  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <developers> 
    <developer> 
      <name>Brett Porter</name>  
      <id>brettporter</id>  
      <email>brett@apache.org</email>  
      <roles> 
        <role>coordinator</role>  
      </roles> 
    </developer>  
    <developer> 
      <name>Melvin Sembrano</name>  
      <id>melvinsembrano</id>  
      <email>melvinsembrano@gmail.com</email>  
      <roles> 
        <role>coordinator</role>  
      </roles> 
    </developer>
    <developer> 
      <name>Joe Ocaba</name>  
      <id>jocaba</id>  
      <email>jocaba@exist.com</email>  
      <roles> 
        <role>coordinator</role>  
      </roles> 
    </developer>     
    <developer> 
      <name>C�dric</name>  
      <id>mimil</id>  
      <roles> 
        <role>developer</role>  
      </roles> 
    </developer>  
    <developer> 
      <name>Maricor Baclay</name>  
      <id>mbaclay</id>  
      <email>mbaclay@exist.com</email>  
      <roles> 
        <role>QA</role>  
      </roles> 
    </developer>  
    <developer>
      <name>Wendy Smoak</name>
      <id>wsmoak</id>
      <email>wsmoak@gmail.com</email>
    </developer> 
    <!--Emeritus Committers-->
    <developer> 
      <name>Leopoldo Agdeppa</name>  
      <id>lagdeppa</id>  
      <email>lagdeppa@exist.com</email>  
    </developer>  
    <developer> 
      <name>Jan Ancajas</name>  
      <id>jancajas</id>  
      <email>jancajas@exist.com</email>  
    </developer>
    <developer> 
      <name>Shein Ernacio</name>  
      <id>sernacio</id>  
      <email>sernacio@exist.com</email>  
    </developer>  
    <developer> 
      <name>Shane Isbell</name>  
      <id>sisbell</id>  
      <email>sisbell@apache.org</email>  
      <url>http://jroller.com/page/random7</url>  
    </developer>      
    <developer> 
      <name>Evan Worley</name>  
      <id>eworley</id>  
      <email>eworley@apache.org</email>  
    </developer>        
    <!--Emeritus Committers-->
  </developers>  
  <modules> 
    <module>components</module>  
    <module>archetypes</module>  
    <module>plugins</module>  
    <module>dotnet</module>
    <!-- must appear before the second repository builder that includes it -->
    <module>misc/dotnet-repository-builder</module>
    <module>misc/npanday-repository-builder</module>
  </modules>  
  <build> 
    <plugins> 
      <plugin> 
        <groupId>org.apache.maven.plugins</groupId>      
        <artifactId>maven-release-plugin</artifactId>  
        <version>2.0-beta-9</version>  
        <configuration>  
          <tagBase>https://npanday.svn.codeplex.com/svn/releases/</tagBase>  
          <useReleaseProfile>false</useReleaseProfile>
          <goals>deploy</goals>  
          <preparationGoals>clean install</preparationGoals>  
          <autoVersionSubmodules>true</autoVersionSubmodules>
        </configuration>  
      </plugin>
      <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>npanday</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.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>2.5</version>
          <dependencies>
            <dependency>
              <groupId>com.thoughtworks.qdox</groupId>
              <artifactId>qdox</artifactId>
              <version>1.9.2</version>
            </dependency>
          </dependencies>    
        </plugin>
        <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>
  <dependencyManagement> 
    <dependencies> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-assembler</artifactId>  
        <version>1.1</version> 
      </dependency>  
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-dao-project</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-executable</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-artifact</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-plugin</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-registry</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-repository</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-core</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-vendor</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-model-netdependency</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-model-assembly-plugins</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-model-compiler-plugins</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-model-executable-plugins</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-model-configuration-appenders</artifactId>  
        <version>1.1</version> 
      </dependency> 
      <dependency> 
        <groupId>npanday</groupId>  
        <artifactId>dotnet-model-settings</artifactId>  
        <version>1.1</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-project</artifactId>  
        <version>${mavenVersion}</version> 
      </dependency>  
      <dependency> 
        <groupId>org.apache.maven</groupId>  
        <artifactId>maven-plugin-api</artifactId>  
        <version>${mavenVersion}</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>  
  <profiles>
    <profile>
      <id>integrationTests</id>
      <modules>
        <module>npanday-it-runner</module>
      </modules>
    </profile>
  </profiles>
  <properties> 
    <mavenVersion>2.0.9</mavenVersion>  
    <npanday.snapshots.url>http://repo.npanday.org/archiva/repository/npanday-snapshots</npanday.snapshots.url>
    <npanday.releases.url>http://repo.npanday.org/archiva/repository/npanday-releases</npanday.releases.url>
  </properties>  
  <distributionManagement>
    <snapshotRepository>
      <id>npanday.snapshots</id>
      <name>NPanday Snapshots Repository</name>
      <url>${npanday.snapshots.url}</url>
    </snapshotRepository>
    <repository>
      <id>npanday.releases</id>
      <name>NPanday Releases Repository</name>
      <url>${npanday.releases.url}</url>
    </repository>
  </distributionManagement>
  <!-- TODO: need to get these into central after 1.1 -->
  <pluginRepositories>
    <pluginRepository>
      <id>npanday.releases</id>
      <name>NPanday Releases Repository</name>
      <url>http://repo.npanday.org/archiva/repository/npanday-releases</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>
  <repositories>
    <repository>
      <id>npanday.releases</id>
      <name>NPanday Releases Repository</name>
      <url>http://repo.npanday.org/archiva/repository/npanday-releases</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
<!-- Additional repositories needed in addition to files in thirdparty if not already loaded into your own
        <repository> 
          <id>aduna.org</id>  
          <url>http://repository.aduna-software.org/maven2</url> 
        </repository> 
-->
  </repositories>
</project>
