<?xml version="1.0"?>
<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <prerequisites>
    <maven>3.0.4</maven>
  </prerequisites>
  <groupId>net.onrc.onos.of.ctl</groupId>
  <artifactId>io</artifactId>
  <version>0.0.1</version>
  <packaging>bundle</packaging>
  <name>of-ctl</name>
  <url>http://onlab.us/</url>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>
  <repositories>
    <repository>
      <id>central</id>
      <name>Maven Central repository</name>
      <url>https://repo1.maven.org/maven2</url>
    </repository>
    <repository>
      <id>maven-restlet</id>
      <name>Public online Restlet repository</name>
      <url>http://maven.restlet.org</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>sonatype-oss-snapshot</id>
      <name>Sonatype OSS snapshot repository</name>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
  </repositories>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <powermock.version>1.5.5</powermock.version>
    <restlet.version>2.1.4</restlet.version>
    <cobertura-maven-plugin.version>2.6</cobertura-maven-plugin.version>
    <!-- Following 2 findbugs version needs to be updated in sync to match the
         findbugs version used in findbugs-plugin -->
    <findbugs.version>3.0.0</findbugs.version>
    <findbugs-plugin.version>3.0.0</findbugs-plugin.version>
    <findbugs.effort>Max</findbugs.effort>
    <findbugs.excludeFilterFile>${project.basedir}/conf/findbugs/exclude.xml</findbugs.excludeFilterFile>
    <checkstyle-plugin.version>2.12</checkstyle-plugin.version>
    <!-- To publish javadoc to github,
     uncomment com.github.github site-maven-plugin and
     see https://github.com/OPENNETWORKINGLAB/ONOS/pull/425
    <github.global.server>github</github.global.server>
     -->
    <metrics.version>3.0.2</metrics.version>
    <maven.surefire.plugin.version>2.16</maven.surefire.plugin.version>
  </properties>
  <build>
    <plugins>
    <plugin>
	<groupId>org.apache.felix</groupId>
	<artifactId>maven-scr-plugin</artifactId>
	<version>1.15.0</version>
	<executions>
		<execution>
			<id>generate-scr-srcdescriptor</id>
			<goals>
				<goal>scr</goal>
			</goals>
		</execution>
	</executions>
	<configuration>
		<supportedProjectTypes>
			<supportedProjectType>bundle</supportedProjectType>
			<supportedProjectType>war</supportedProjectType>
		</supportedProjectTypes>
	</configuration>
</plugin> 
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.3.6</version>
        <extensions>true</extensions>
        <configuration>
            <instructions>
             <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
            </instructions>
        </configuration>
      </plugin>
      <!-- Note: the checkstyle configuration is also in the reporting section -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${checkstyle-plugin.version}</version>
        <configuration>
          <configLocation>${project.basedir}/conf/checkstyle/sun_checks.xml</configLocation>
          <propertiesLocation>${project.basedir}/conf/checkstyle/checkstyle_maven.properties</propertiesLocation>
          <failsOnError>false</failsOnError>
          <logViolationsToConsole>true</logViolationsToConsole>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
        </configuration>
        <executions>
          <execution>
            <id>validate-checkstyle</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin> 
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.1</version>
        <executions>
        </executions>
      </plugin>
      <!-- guice maven plugin for dependency injection inside maven -->
      <plugin>
        <groupId>org.apache.camel</groupId>
        <artifactId>guice-maven-plugin</artifactId>
        <version>2.11.0</version>
      </plugin>
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <version>2.5</version>
      </plugin>
      <plugin>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>2.8</version>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
      </plugin>
      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
      </plugin>
      <plugin>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.3</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
          <encoding>UTF-8</encoding>
          <showDeprecation>true</showDeprecation>
          <showWarnings>true</showWarnings>
          <compilerArgs>
            <arg>-Xlint:all</arg>
            <arg>-Xlint:-serial</arg>
            <arg>-Werror</arg>
          </compilerArgs>
        </configuration>
        <executions>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${maven.surefire.plugin.version}</version>
        <configuration>
          <!-- FIXME -XX:-UseSplitVerifier added as workaround for JDK 1.7.0u65 + PowerMock issue
                 https://issues.jboss.org/browse/JASSIST-228 -->
          <argLine>-XX:MaxPermSize=256m -XX:-UseSplitVerifier</argLine>
          <redirectTestOutputToFile>false</redirectTestOutputToFile>
        </configuration>
      </plugin>
      <!-- TODO exec:java no longer used remove at some point? -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <configuration>
          <mainClass>net.onrc.onos.core.main.Main</mainClass>
        </configuration>
        <executions>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9.1</version>
        <configuration>
          <charset>UTF-8</charset>
          <locale>en</locale>
          <author>false</author>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
      </plugin>
      <plugin>
        <!-- Using groovy script to set maven property ${hostname}.
             This is a workaround to get hostname as a property inside pom file,
             which current Maven does not provide. -->
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>groovy-maven-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <phase>initialize</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>
                project.properties["hostname"] = InetAddress.getLocalHost().getHostName()
              </source>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.8</version>
        <executions>
          <execution>
            <id>build-classpath</id>
            <phase>compile</phase>
            <goals>
              <goal>build-classpath</goal>
            </goals>
            <configuration>
              <outputFile>${project.basedir}/.javacp.${hostname}</outputFile>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>${cobertura-maven-plugin.version}</version>
        <configuration>
          <instrumentation>
            <ignores>
              <ignore>org.slf4j.*</ignore>
            </ignores>
          </instrumentation>
          <quiet>true</quiet>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>clean</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!-- Note: the findbugs configuration is also in the reporting section -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>${findbugs-plugin.version}</version>
        <configuration>
          <effort>${findbugs.effort}</effort>
          <excludeFilterFile>${findbugs.excludeFilterFile}</excludeFilterFile>
        </configuration>
        <executions>
          <execution>
            <id>validate-findbugs</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin> 
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <!--
            Note: Exclusion definition exists in multiple places.
            - In file ${findbugs.excludeFilterFile} defined at top of pom.xml
            - In file conf/checkstyle/onos_suppressions.xml
            - maven-pmd-plugin configuration in pom.xml
              (under build and reporting)
          -->
          <rulesets>
            <ruleset>${basedir}/conf/pmd/ruleset.xml</ruleset>
          </rulesets>
        </configuration>
        <executions>
          <execution>
            <id>validate-pmd</id>
            <phase>verify</phase>
            <goals>
              <!--  Uncomment this goal to make the build fail on pmd errors -->
              <!--<goal>check</goal>-->
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
    <pluginManagement>
      <plugins>
        <!--This plugin's configuration is used to store Eclipse m2e settings 
          only. It has no influence on the Maven build itself. -->
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>
                      org.apache.maven.plugins
                    </groupId>
                    <artifactId>
                      maven-dependency-plugin
                    </artifactId>
                    <versionRange>[2.8,)</versionRange>
                    <goals>
                      <goal>build-classpath</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.codehaus.gmaven</groupId>
                    <artifactId>groovy-maven-plugin</artifactId>
                    <versionRange>[2.0,)</versionRange>
                    <goals>
                      <goal>execute</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore></ignore>
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <!-- for getting visualization reporting -->
  <reporting>
    <excludeDefaults>true</excludeDefaults>
    <outputDirectory>${project.build.directory}/site</outputDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>2.7</version>
        <configuration>
          <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
          <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>dependencies</report>
              <report>scm</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9.1</version>
        <configuration>
          <charset>UTF-8</charset>
          <locale>en</locale>
          <author>false</author>
          <excludePackageNames>net.floodlightcontroller.*:net.onrc.onos.core.datastore.serializers</excludePackageNames>
        </configuration>
      </plugin>
      <plugin>
        <!-- Note: the checkstyle configuration is also in the build section -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>${checkstyle-plugin.version}</version>
        <configuration>
          <configLocation>conf/checkstyle/sun_checks.xml</configLocation>
          <!--
            Note: Exclusion definition exists in multiple places.
            - In file ${findbugs.excludeFilterFile} defined at top of pom.xml
            - maven-checkstyle-plugin configuration in pom.xml
            - maven-pmd-plugin configuration in pom.xml
              (under build and reporting)
          -->
          <propertiesLocation>${basedir}/conf/checkstyle/checkstyle_maven.properties</propertiesLocation>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
        </configuration>
        <reportSets>
          <reportSet>
            <reports>
              <report>checkstyle</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <!-- Note: the findbugs configuration is also in the build section -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
        <version>${findbugs-plugin.version}</version>
        <configuration>
          <effort>${findbugs.effort}</effort>
          <excludeFilterFile>${findbugs.excludeFilterFile}</excludeFilterFile>
          <reportPlugins>
            <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>findbugs-maven-plugin</artifactId>
            </plugin>
          </reportPlugins>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-pmd-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <!--
            Note: Exclusion definition exists in multiple places.
            - In file ${findbugs.excludeFilterFile} defined at top of pom.xml
            - In file conf/checkstyle/onos_suppressions.xml
            - maven-pmd-plugin configuration in pom.xml
              (under build and reporting)
          -->
          <excludes>
            <exclude>**/datastore/serializers/**</exclude>
            <exclude>**/edu/stanford/**</exclude>
            <exclude>**/net/floodlightcontroller/**</exclude>
          </excludes>
          <rulesets>
            <ruleset>${basedir}/conf/pmd/onos_ruleset.xml</ruleset>
          </rulesets>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jxr-plugin</artifactId>
        <version>2.4</version>
    </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <version>${cobertura-maven-plugin.version}</version>
      </plugin>
    </plugins>
  </reporting>
  <dependencies>
    <!-- ONOS's direct dependencies -->
	<dependency>
		<groupId>org.apache.felix</groupId>
		<artifactId>org.apache.felix.scr.annotations</artifactId>
		<version>1.9.6</version>
	</dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.1.2</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.1.2</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.5</version>
    </dependency>
    <dependency>
      <!-- findbugs suppression annotation and @GuardedBy, etc. -->
      <groupId>com.google.code.findbugs</groupId>
      <artifactId>annotations</artifactId>
      <version>${findbugs.version}</version>
    </dependency>
    <dependency>
      <groupId>org.projectfloodlight</groupId>
      <artifactId>openflowj</artifactId>
      <version>0.3.6-SNAPSHOT</version>
    </dependency>
    <!-- Floodlight's dependencies -->
    <dependency>
      <!-- dependency to old version of netty? -->
      <groupId>io.netty</groupId>
      <artifactId>netty</artifactId>
      <version>3.9.2.Final</version>
    </dependency>
    <!-- Dependency for libraries used for testing -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>3.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-api-easymock</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <profiles>
    <!-- Jenkins by default defines a property BUILD_NUMBER which is used to 
      enable the profile. -->
    <profile>
      <id>jenkins</id>
      <activation>
        <property>
          <name>env.BUILD_NUMBER</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>${cobertura-maven-plugin.version}</version>
            <configuration>
              <formats>
                <format>xml</format>
              </formats>
              <quiet>true</quiet>
            </configuration>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>cobertura</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>all-tests</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${maven.surefire.plugin.version}</version>
            <configuration combine.self="merge">
              <excludedGroups></excludedGroups>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>error-prone</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
              <compilerArgs combine.children="append">
                <!-- FIXME -Xlint:-path required when using findbugs + error-prone -->
                <arg>-Xlint:-path</arg>
              </compilerArgs>
              <!-- Turn on error-prone -->
              <compilerId>javac-with-errorprone</compilerId>
              <forceJavacCompilerUse>true</forceJavacCompilerUse>
            </configuration>
            <dependencies combine.children="append">
              <dependency>
                <groupId>com.google.errorprone</groupId>
                <artifactId>error_prone_core</artifactId>
                <version>1.1.2</version>
              </dependency>
              <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-compiler-javac</artifactId>
                <version>2.3</version>
              </dependency>
              <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-compiler-javac-errorprone</artifactId>
                <version>2.3</version>
              </dependency>
            </dependencies>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
