<?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-incubating-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-incubating-SNAPSHOT</version>
      <type>library</type> 
    </dependency>  
    <dependency> 
      <groupId>org.apache.npanday</groupId>
      <artifactId>NPanday.Model.Pom</artifactId>  
      <version>1.5.0-incubating-SNAPSHOT</version>
      <type>library</type> 
    </dependency>  
    <dependency> 
      <groupId>org.apache.npanday</groupId>
      <artifactId>NPanday.Model.Settings</artifactId>  
      <version>1.5.0-incubating-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>
