<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright 2005 Exist Global
    
     Licensed 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>org.apache.npanday</groupId>
    <version>1.5.0-azuresupport-SNAPSHOT</version>  
    <artifactId>NPanday.Assemblies</artifactId> 
  </parent>  
  <modelVersion>4.0.0</modelVersion>  
  <groupId>org.apache.npanday</groupId>
  <artifactId>NPanday.Utils</artifactId>  
  <packaging>library</packaging>  
  <name>NPanday :: .NET Utils</name>  
  <dependencies>  
    <dependency> 
      <groupId>org.apache.npanday</groupId>
      <artifactId>NPanday.Logging</artifactId>  
      <version>1.5.0-azuresupport-SNAPSHOT</version>
      <type>library</type> 
    </dependency>  
    <dependency> 
      <groupId>org.apache.npanday</groupId>
      <artifactId>NPanday.Model.Pom</artifactId>  
      <version>1.5.0-azuresupport-SNAPSHOT</version>
      <type>library</type> 
    </dependency>  
    <dependency> 
      <groupId>org.apache.npanday</groupId>
      <artifactId>NPanday.Model.Settings</artifactId>  
      <version>1.5.0-azuresupport-SNAPSHOT</version>
      <type>library</type>  
    </dependency>
	<dependency> 
      <groupId>NUnit</groupId>  
      <artifactId>NUnit.Framework</artifactId>  
      <version>2.2.8.0</version>  
      <type>library</type>  
      <scope>test</scope> 
    </dependency>
  </dependencies>  
  <profiles>
    <profile>
      <id>partcover</id>
      <build>
        <plugins>
          <plugin> 
            <groupId>org.apache.npanday.plugins</groupId>
            <artifactId>partcover-maven-plugin</artifactId>  
            <configuration>
              <!--<nUnit>C:\\Program Files\\NUnit 2.5.7\\bin\net-2.0\\nunit-console.exe</nUnit>-->
              <!--<partCover>C:\\Program Files\PartCover\\PartCover .NET 4.0\\PartCover.exe</partCover>-->
              <assemblyName>${project.build.directory}/test-assemblies/NPanday.Utils-test.dll</assemblyName>
              <!--<msxsl>C:\\WINDOWS\\msxsl.exe</msxsl>-->
              <!--<xslt>C:\\Program Files\\PartCover\\PartCover .NET 4.0\\xslt\\Report By Assembly.xslt"<xslt>-->
            </configuration>
            <executions> 
              <execution> 
                <goals> 
                  <goal>generate</goal> 
                  <goal>convert</goal>
                </goals> 
              </execution> 
            </executions> 
          </plugin>  
        </plugins> 
      </build>
    </profile>
  </profiles>
</project>
