<?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">  
   <parent> 
    <groupId>npanday</groupId>  
    <version>1.1</version>  
    <artifactId>npanday-project</artifactId>  
    <relativePath>../pom.xml</relativePath> 
  </parent>
  <modelVersion>4.0.0</modelVersion>  
  <artifactId>NPanday.Project</artifactId>  
  <packaging>pom</packaging>  
  <name>NPanday :: .NET Projects</name>  
  <modules> 
    <module>assemblies</module>  
    <module>../plugins/netplugins</module> 
  </modules>  
  <build> 
    <sourceDirectory>src/main/csharp</sourceDirectory>  
    <testSourceDirectory>src/test/csharp</testSourceDirectory>  
    <plugins> 
      <plugin> 
        <groupId>npanday.plugin</groupId>  
        <artifactId>maven-compile-plugin</artifactId>  
        <!-- Must peg to a previous release to avoid MNG-1911 bug -->
        <version>1.0.2</version>
        <extensions>true</extensions>  
        <configuration> 
          <frameworkVersion>2.0.50727</frameworkVersion> 
        </configuration> 
      </plugin>  
    </plugins> 
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>npanday.plugin</groupId>
          <artifactId>maven-resolver-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <plugin>
          <groupId>npanday.plugin</groupId>
          <artifactId>NPanday.Plugin.Settings.JavaBinding</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>  
  <!-- TODO: the current NPanday libraries won't apply these properly, so we had to repeat them in the POMs as well -->
  <dependencyManagement> 
    <dependencies> 
      <dependency> 
        <groupId>Microsoft.Build.Engine</groupId>  
        <artifactId>Microsoft.Build.Engine</artifactId>  
        <type>gac_msil</type>  
        <version>2.0.0.0</version>  
        <classifier>b03f5f7f11d50a3a</classifier> 
      </dependency>  
      <dependency> 
        <groupId>EnvDTE</groupId>  
        <artifactId>EnvDTE</artifactId>  
        <type>gac</type>  
        <version>8.0.0.0</version>  
        <classifier>b03f5f7f11d50a3a</classifier> 
      </dependency>  
      <dependency> 
        <groupId>EnvDTE80</groupId>  
        <artifactId>EnvDTE80</artifactId>  
        <type>gac</type>  
        <version>8.0.0.0</version>  
        <classifier>b03f5f7f11d50a3a</classifier> 
      </dependency>  
      <dependency> 
        <groupId>Microsoft.VisualStudio.CommandBars</groupId>  
        <artifactId>Microsoft.VisualStudio.CommandBars</artifactId>  
        <version>8.0.0.0</version>  
        <classifier>b03f5f7f11d50a3a</classifier>  
        <type>gac</type> 
      </dependency>  
      <dependency> 
        <groupId>Microsoft.VisualStudio.TemplateWizardInterface</groupId>  
        <artifactId>Microsoft.VisualStudio.TemplateWizardInterface</artifactId>  
        <version>8.0.0.0</version>  
        <classifier>b03f5f7f11d50a3a</classifier>  
        <type>gac_msil</type> 
      </dependency>  
      <dependency> 
        <groupId>Extensibility</groupId>  
        <artifactId>Extensibility</artifactId>  
        <type>gac</type>  
        <version>7.0.3300.0</version>  
        <classifier>b03f5f7f11d50a3a</classifier> 
      </dependency>  
      <dependency> 
        <groupId>NUnit</groupId>  
        <artifactId>NUnit.Framework</artifactId>  
        <version>2.2.8.0</version>  
        <type>library</type>  
        <scope>test</scope> 
      </dependency> 

      <dependency> 
        <groupId>npanday.model</groupId>  
        <artifactId>NPanday.Model.Pom</artifactId>  
        <version>1.1</version>
        <type>library</type>  
      </dependency>  
      <dependency> 
        <groupId>npanday.model</groupId>  
        <artifactId>NPanday.Model.AutomationExtensibility</artifactId>  
        <version>1.1</version>
        <type>library</type>  
      </dependency>  
      <dependency> 
        <groupId>npanday.model</groupId>  
        <artifactId>NPanday.Model.Settings</artifactId>  
        <version>1.1</version>
        <type>library</type>  
      </dependency>  
      <dependency> 
        <groupId>npanday.logging</groupId>  
        <artifactId>NPanday.Logging</artifactId>  
        <version>1.1</version>
        <type>library</type>  
      </dependency>  
      <dependency> 
        <groupId>npanday.artifact</groupId>  
        <artifactId>NPanday.Artifact</artifactId>  
        <version>1.1</version>
        <type>library</type>  
      </dependency>  
      <dependency> 
        <groupId>npanday.utils</groupId>  
        <artifactId>NPanday.Utils</artifactId>  
        <version>1.1</version>
        <type>library</type>  
      </dependency>  
      <dependency> 
        <groupId>npanday.plugin</groupId>  
        <artifactId>NPanday.Plugin</artifactId>  
        <version>1.1</version>
        <type>library</type>  
      </dependency>  
      <dependency> 
        <groupId>npanday.projectimporter</groupId>  
        <artifactId>NPanday.ProjectImporterEngine</artifactId>  
        <version>1.1</version>
        <type>library</type>  
      </dependency>  
      <dependency> 
        <groupId>npanday.visualstudio</groupId>  
        <artifactId>NPanday.VisualStudio</artifactId>  
        <version>1.1</version>
        <type>library</type>  
      </dependency>  
    </dependencies> 
  </dependencyManagement> 
</project>
