<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements.  See the NOTICE.txt 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>
  <artifactId>pcs-core</artifactId>
  <parent>
    <groupId>org.apache.oodt</groupId>
    <artifactId>oodt-core</artifactId>
    <version>0.5</version>
    <relativePath>../../core/pom.xml</relativePath>
  </parent>
  <name>Process Control System Core Package</name>
  <packaging>jar</packaging>
  <description>The Process Control System's core system framework. PCS is an agglomeration of 
  CAS services and components needed to build a science data system.
  </description>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2-beta-2</version>
        <configuration>
          <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
          </descriptors>
          <archive>
            <manifest>
              <mainClass>org.apache.oodt.pcs.tools.PCSHealthMonitor</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>    
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>oodt-commons</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>pcs-input</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>cas-metadata</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>cas-workflow</artifactId>
      <version>${project.parent.version}</version>
    </dependency>    
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>cas-resource</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>cas-filemgr</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.oodt</groupId>
      <artifactId>cas-crawler</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>xmlrpc</groupId>
      <artifactId>xmlrpc</artifactId>
      <version>2.0.1</version>
    </dependency>    
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
