<?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.Assemblies</artifactId> 
  </parent>  
  <modelVersion>4.0.0</modelVersion>  
  <groupId>npanday.visualstudio</groupId>  
  <artifactId>NPanday.VisualStudio.Addin</artifactId>  
  <packaging>visual-studio-addin</packaging>  
  <name>NPanday :: VisualStudio Addin</name>  
  <dependencies>
    <dependency> 
      <groupId>npanday.plugin</groupId>  
      <artifactId>NPanday.Plugin</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.model</groupId>  
      <artifactId>NPanday.Model.Pom</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>  
    <dependency> 
      <groupId>npanday.artifact</groupId>  
      <artifactId>NPanday.Artifact</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>Microsoft.VisualStudio.CommandBars</groupId>  
      <artifactId>Microsoft.VisualStudio.CommandBars</artifactId>  
      <version>8.0.0.0</version>
      <type>gac</type>  
      <classifier>b03f5f7f11d50a3a</classifier> 
    </dependency>  
    <dependency> 
      <groupId>EnvDTE</groupId>  
      <artifactId>EnvDTE</artifactId>  
      <version>8.0.0.0</version>
      <type>gac</type>  
      <classifier>b03f5f7f11d50a3a</classifier> 
    </dependency>  
    <dependency> 
      <groupId>EnvDTE80</groupId>  
      <artifactId>EnvDTE80</artifactId>  
      <version>8.0.0.0</version>
      <type>gac</type>  
      <classifier>b03f5f7f11d50a3a</classifier> 
    </dependency>  
    <dependency>
      <groupId>Microsoft.Build.Engine</groupId>
      <artifactId>Microsoft.Build.Engine</artifactId>
      <version>2.0.0.0</version>
      <type>gac_msil</type>
      <classifier>b03f5f7f11d50a3a</classifier>
    </dependency>
    <dependency> 
      <groupId>Extensibility</groupId>  
      <artifactId>Extensibility</artifactId>  
      <version>7.0.3300.0</version>  
      <type>gac</type>  
      <classifier>b03f5f7f11d50a3a</classifier> 
    </dependency>  
    <dependency> 
      <groupId>VSLangProj</groupId>  
      <artifactId>VSLangProj</artifactId>  
      <type>gac</type>  
      <version>7.0.3300.0</version>  
      <classifier>b03f5f7f11d50a3a</classifier> 
    </dependency>  
    <dependency> 
      <groupId>VSLangProj80</groupId>  
      <artifactId>VSLangProj80</artifactId>  
      <type>gac</type>  
      <version>8.0.0.0</version>  
      <classifier>b03f5f7f11d50a3a</classifier> 
    </dependency>  
    <dependency> 
      <groupId>VsWebSite.Interop</groupId>  
      <artifactId>VsWebSite.Interop</artifactId>  
      <type>gac</type>  
      <version>8.0.0.0</version>  
      <classifier>b03f5f7f11d50a3a</classifier> 
    </dependency>  
    <dependency> 
      <groupId>npanday.projectimporter</groupId>  
      <artifactId>NPanday.ProjectImporterEngine</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> 
  </dependencies>  
  <profiles> 
    <profile> 
      <activation> 
        <property> 
          <name>startVS</name> 
        </property> 
      </activation>  
      <build> 
        <plugins> 
          <plugin> 
            <groupId>npanday.plugin</groupId>  
            <artifactId>NPanday.Plugin.Devenv.JavaBinding</artifactId>  
            <version>1.1-SNAPSHOT</version>
            <executions> 
              <execution> 
                <goals> 
                  <goal>start</goal> 
                </goals> 
              </execution> 
            </executions> 
          </plugin> 
        </plugins> 
      </build> 
    </profile> 
  </profiles> 
</project>
