<?xml version="1.0"?>
<!--

    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">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.camel.example</groupId>
    <artifactId>examples</artifactId>
    <version>3.0.0-M1</version>
  </parent>

  <artifactId>camel-example-splunk</artifactId>
  <name>Camel :: Example :: Splunk</name>
  <description>An example using Splunk</description>

  <properties>
    <category>Management and Monitoring</category>
  </properties>

  <dependencies>

    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-core</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-splunk</artifactId>
    </dependency>
    
    <!-- logging -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
    </dependency>

  </dependencies>

  <profiles>

    <profile>
      <id>search-client</id>
      <build>
        <plugins>
          <!-- Allows the example to be run via 'mvn compile exec:java -Psearch-client' -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <configuration>
              <mainClass>org.apache.camel.example.splunk.SplunkSearchClient</mainClass>
              <includePluginDependencies>false</includePluginDependencies>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>saved-search-client</id>
      <build>
        <plugins>
          <!-- Allows the example to be run via 'mvn compile exec:java -Psaved-search-client' -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <configuration>
              <mainClass>org.apache.camel.example.splunk.SplunkSavedSearchClient</mainClass>
              <includePluginDependencies>false</includePluginDependencies>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>publish-event-client</id>
      <build>
        <plugins>
          <!-- Allows the example to be run via 'mvn compile exec:java -Ppublish-event-client' -->
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <configuration>
              <mainClass>org.apache.camel.example.splunk.SplunkPublishEventClient</mainClass>
              <includePluginDependencies>false</includePluginDependencies>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

  </profiles>

</project>
