<?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>  
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
  </parent>  
  <groupId>org.apache.npanday</groupId>
  <artifactId>npanday-project</artifactId>  
  <packaging>pom</packaging>  
  <version>1.4.0-incubating</version>  
  <name>Apache NPanday</name>  
  <url>http://incubator.apache.org/npanday/</url>
  <description>NPanday provides Maven plugins to support building of .NET applications</description>  
  <mailingLists> 
    <mailingList> 
      <name>NPanday Developers List</name>  
      <post>npanday-dev@incubator.apache.org</post>
      <subscribe>npanday-dev-subscribe@incubator.apache.org</subscribe>
      <unsubscribe>npanday-dev-unsubscribe@incubator.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/incubator-npanday-dev/</archive>
      <otherArchives> 
        <otherArchive>http://incubator.markmail.org/search/?q=list:org.apache.incubator.npanday-dev</otherArchive>
      </otherArchives> 
    </mailingList>  
    <mailingList> 
      <name>NPanday Commits List</name>  
      <post>npanday-commits@incubator.apache.org</post>
      <subscribe>npanday-commits-subscribe@incubator.apache.org</subscribe>
      <unsubscribe>npanday-commits-unsubscribe@incubator.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/incubator-npanday-commits/</archive>
      <otherArchives> 
        <otherArchive>http://incubator.markmail.org/search/?q=list:org.apache.incubator.npanday-commits</otherArchive>
      </otherArchives> 
    </mailingList>  
    <mailingList> 
      <name>NPanday Users List</name>  
      <post>npanday-users@incubator.apache.org</post>
      <subscribe>npanday-users-subscribe@incubator.apache.org</subscribe>
      <unsubscribe>npanday-users-unsubscribe@incubator.apache.org</unsubscribe>
      <archive>http://mail-archives.apache.org/mod_mbox/incubator-npanday-users/</archive>
      <otherArchives> 
        <otherArchive>http://incubator.markmail.org/search/?q=list:org.apache.incubator.npanday-users</otherArchive>
      </otherArchives> 
    </mailingList>  
  </mailingLists>
  <scm> 
    <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/npanday/tags/npanday-1.4.0-incubating</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/npanday/tags/npanday-1.4.0-incubating</developerConnection>
    <url>http://svn.apache.org/viewvc/incubator/npanday/tags/npanday-1.4.0-incubating</url>
  </scm>  
  <issueManagement> 
    <system>jira</system>  
    <url>http://issues.apache.org/jira/browse/NPANDAY</url>
  </issueManagement>
  <ciManagement>
    <system>continuum</system>
    <url>http://ci.npanday.org/continuum/</url>
  </ciManagement>
  <developers> 
    <developer> 
      <name>Craig Bachelor</name>  
      <id>craig</id>  
    </developer>  
    <developer> 
      <name>Marecor Baclay</name>  
      <id>mbaclay</id>  
      <email>mbaclay@exist.com</email>  
    </developer>  
    <developer>
      <name>Maria Odea Ching</name>
      <id>oching</id>
      <roles>
        <role>Mentor</role>
      </roles>
    </developer>
    <developer>
      <name>Lars Corneliussen</name>
      <id>lcorneliussen</id>
      <email>me@lcorneliussen.de</email>
    </developer>
    <developer>
      <name>John Fallows</name>
      <id>jfallows</id>
    </developer> 
    <developer>
      <name>Dennis Lundberg</name>
      <id>dennisl</id>
      <roles>
        <role>Mentor</role>
      </roles>
    </developer>
    <developer> 
      <name>Joe Ocaba</name>  
      <id>jocaba</id>  
      <email>jocaba@maestrodev.com</email>  
    </developer>     
    <developer> 
      <name>Adelita Padilla</name>  
      <id>apadilla</id>  
      <email>apadilla@maestrodev.com</email>
    </developer>     
    <developer> 
      <name>Brett Porter</name>  
      <id>brett</id>  
      <email>brett@apache.org</email>
    </developer>  
    <developer>
      <name>Wendy Smoak</name>
      <id>wsmoak</id>
      <email>wsmoak@gmail.com</email>
    </developer> 
    <developer>
      <name>Matthias Wessendorf</name>
      <id>matzew</id>
      <roles>
        <role>Mentor</role>
      </roles>
    </developer>
    <!--Emeritus Committers-->
    <developer> 
      <name>C�dric</name>  
      <id>mimil</id>  
    </developer>  
    <developer> 
      <name>Leopoldo Agdeppa</name>  
      <id>lagdeppa</id>  
      <email>lagdeppa@exist.com</email>  
      <roles> 
        <role>Emeritus</role>  
      </roles> 
    </developer>  
    <developer> 
      <name>Jan Ancajas</name>  
      <id>jancajas</id>  
      <email>jancajas@exist.com</email>  
      <roles> 
        <role>Emeritus</role>  
      </roles> 
    </developer>
    <developer> 
      <name>Shein Ernacio</name>  
      <id>sernacio</id>  
      <email>sernacio@exist.com</email>  
      <roles> 
        <role>Emeritus</role>  
      </roles> 
    </developer>  
    <developer> 
      <name>Shane Isbell</name>  
      <id>sisbell</id>  
      <email>sisbell@apache.org</email>  
      <roles> 
        <role>Emeritus</role>  
      </roles> 
    </developer>      
    <developer>
      <name>Gavin McDonald</name>
      <id>gmcdonald</id>
      <roles>
        <role>Former Mentor</role>
      </roles>
    </developer>
    <developer> 
      <name>Melvin Sembrano</name>  
      <id>melvinsembrano</id>  
      <email>melvinsembrano@gmail.com</email>  
      <roles> 
        <role>Emeritus</role>  
      </roles> 
    </developer>
    <developer> 
      <name>Evan Worley</name>  
      <id>eworley</id>  
      <email>eworley@apache.org</email>  
      <roles> 
        <role>Emeritus</role>  
      </roles> 
    </developer>        
  </developers>
  <contributors>
    <contributor>
      <name>Chris Bown</name>
    </contributor>
    <contributor>
      <name>Artem Fedorenko</name>
    </contributor>
    <contributor>
      <name>Kurt Harriger</name>
    </contributor>
    <contributor>
      <name>Thorsten Kamann</name>
    </contributor>
    <contributor>
      <name>Nap Ramirez</name>
    </contributor>
    <contributor>
      <name>Franz Allan Valencia See</name>
    </contributor>
    <contributor>
      <name>Paul G</name>
    </contributor>
    <contributor>
      <name>Henrik Bie</name>
    </contributor>
  </contributors>
  <modules> 
    <module>components</module>  
    <module>archetypes</module>  
    <module>plugins</module>  
    <module>dotnet</module>
    <!--
	  MOVED TO RELEASE PROFILE
	  <module>misc/dotnet-repository-builder</module>
    <module>misc/npanday-repository-builder</module>
    <module>misc/npanday-installer</module>
    -->
  </modules>  
  <build> 
    <plugins>	
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId>      
        <artifactId>maven-release-plugin</artifactId>  
        <version>2.0</version>  
        <configuration>  
          <tagBase>https://svn.apache.org/repos/asf/incubator/npanday/tags</tagBase>  
          <useReleaseProfile>false</useReleaseProfile>
          <goals>deploy</goals>  
          <arguments>-Pnpanday-release</arguments>
          <preparationGoals>clean install</preparationGoals>  
          <autoVersionSubmodules>true</autoVersionSubmodules>
		  <mavenExecutorId>forked-path</mavenExecutorId>
        </configuration>  
      </plugin>
      <plugin> 
        <artifactId>maven-javadoc-plugin</artifactId>  
        <configuration> 
          <aggregate>true</aggregate> 
        </configuration> 
      </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>org.apache.npanday</groupId>
        <artifactId>dotnet-assembler</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency>  
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-dao-project</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-executable</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-artifact</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-plugin</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-registry</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-repository</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-core</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-vendor</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-model-netdependency</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-model-assembly-plugins</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-model-compiler-plugins</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-model-executable-plugins</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-model-configuration-appenders</artifactId>  
        <version>1.4.0-incubating</version> 
      </dependency> 
      <dependency> 
        <groupId>org.apache.npanday</groupId>
        <artifactId>dotnet-model-settings</artifactId>  
        <version>1.4.0-incubating</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>${plexus.utils.version}</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>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.5.11</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.11</version>
      </dependency>
    </dependencies> 
  </dependencyManagement>  
  <profiles>
    <profile>
      <id>integrationTests</id>
      <modules>
        <module>npanday-it-runner</module>
      </modules>
    </profile>
    <profile>
      <id>pre-release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
            <version>0.7</version>
            <configuration>
              <excludes>
                <exclude>**/**.properties</exclude>
                <exclude>**/**.resx</exclude>
                <exclude>**/**.txt</exclude>
                <exclude>**/**.css</exclude>
                <exclude>**/**.snk</exclude>
                <exclude>**/**.sln</exclude>
                <exclude>netplugins/**/target/**/*</exclude>
                <exclude>javabinding/target/**/*</exclude>
                <exclude>npanday-it-runner/target/**/*</exclude>
                <exclude>site/target/**/*</exclude>
                <exclude>**/pom-java.xml</exclude>
                <exclude>**/src/main/java/NPanday/Plugin/Addin/AutomationExtensibilityMojo.java</exclude>
                <exclude>**/src/main/java/NPanday/Plugin/Devenv/DevenvMojo.java</exclude>
                <exclude>**/src/main/java/NPanday/Plugin/Settings/SettingsGeneratorMojo.java</exclude>
                <exclude>**/src/main/java/NPanday/Plugin/SysRef/SysRefMojo.java</exclude>
                <exclude>**/src/main/java/NPanday/Plugin/Msbuild/MsbuildMojo.java</exclude>
                <exclude>**/MavenTestProjectWithNUnitCopy/MavenTestProjectWithNUnit/pom.xml</exclude>
                <exclude>**/MavenTestProjectWithNUnitCopy/pom.xml</exclude>
              </excludes>
            </configuration>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>npanday-release</id>
	  <modules>
		<module>misc/dotnet-repository-builder</module>
		<module>misc/npanday-repository-builder</module>
		<module>misc/npanday-installer</module>	
	  </modules>
      <build>
        <plugins>
          <!-- Fail fast: the release build must run on Windows for the Add-in -->
          <!-- TODO: consider splitting it into a separate release -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>1.0-beta-1</version>
            <executions>
              <execution>
                <id>enforce-os</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireOS>
                      <family>windows</family>
                    </requireOS>
                  </rules>
                  <fail>true</fail>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin> 
            <artifactId>maven-assembly-plugin</artifactId>  
            <inherited>false</inherited>  
            <configuration> 
              <descriptor>src/assembly/src.xml</descriptor>  
              <outputDirectory>target</outputDirectory> 
              <finalName>npanday-${project.version}</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-source-plugin</artifactId>
            <version>2.1.2</version>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <configuration>
              <passphrase>${gpg.passphrase}</passphrase>
            </configuration>
            <executions>
              <execution>
                <goals>
                  <goal>sign</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins> 
      </build>
    </profile>
  </profiles>
  <properties> 
    <mavenVersion>2.0.9</mavenVersion>
    <plexus.utils.version>1.5.1</plexus.utils.version>
    <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>
    <bootstrap.npanday.version>${project.version}</bootstrap.npanday.version>
    <!--bootstrap.npanday.version>1.2.1</bootstrap.npanday.version-->
  </properties>  
  <distributionManagement>
    <repository>
      <id>vmbuild.staging</id>
      <url>http://vmbuild.apache.org/archiva/repository/staged-npanday/</url>
    </repository>
    <snapshotRepository>
      <id>vmbuild.snapshots</id>
      <url>http://repo.npanday.org/archiva/repository/npanday-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
  <pluginRepositories>
    <pluginRepository>
      <id>npanday.group</id>
      <name>NPanday Group Repository</name>
      <url>http://repo.npanday.org/archiva/repository/npanday-group</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>
  <repositories>
    <repository>
      <id>npanday.group</id>
      <name>NPanday Group Repository</name>
      <url>http://repo.npanday.org/archiva/repository/npanday-group</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
</project>
