<?xml version="1.0" encoding="UTF-8"?>
<!--
 Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.

 This program and the accompanying materials are made available under the
 terms of the Eclipse Public License v1.0 which accompanies this distribution,
 and is available at http://www.eclipse.org/legal/epl-v10.html
-->
<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>
  <parent>
    <groupId>org.opendaylight.odlparent</groupId>
    <artifactId>odlparent</artifactId>
    <version>2.0.3</version>
    <relativePath>../../odlparent</relativePath>
  </parent>
  <artifactId>opendaylight-karaf-resources</artifactId>
  <description>Resources for opendaylight-karaf</description>
  <packaging>jar</packaging>
  <name>ODL :: odlparent :: ${project.artifactId}</name>
  <dependencies>
    <dependency>
      <groupId>org.apache.karaf.features</groupId>
      <artifactId>framework</artifactId>
      <version>${karaf.version}</version>
      <type>kar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.karaf.features</groupId>
      <artifactId>standard</artifactId>
      <version>${karaf.version}</version>
      <classifier>features</classifier>
      <type>xml</type>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>false</filtering>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>patch-karaf-scripts</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <!-- Patches only work with LF line endings from ant -->
                <fixcrlf srcdir="${project.build.directory}/assembly/bin"
                         includes="*.bat" eol="lf"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-instance.patch"
                       originalfile="${project.build.directory}/assembly/bin/instance"
                       failonerror="true"/>
                <copy file="${project.build.directory}/assembly/bin/instance"
                      tofile="${project.build.directory}/classes/bin/instance"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-instance.bat.patch"
                       originalfile="${project.build.directory}/assembly/bin/instance.bat"
                       failonerror="true" ignorewhitespace="true"/>
                <copy file="${project.build.directory}/assembly/bin/instance.bat"
                      tofile="${project.build.directory}/classes/bin/instance.bat"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-karaf-${karaf.version}.patch"
                       originalfile="${project.build.directory}/assembly/bin/karaf"
                       failonerror="true"/>
                <copy file="${project.build.directory}/assembly/bin/karaf"
                      tofile="${project.build.directory}/classes/bin/karaf"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-karaf.bat.patch"
                       originalfile="${project.build.directory}/assembly/bin/karaf.bat"
                       failonerror="true"/>
                <copy file="${project.build.directory}/assembly/bin/karaf.bat"
                      tofile="${project.build.directory}/classes/bin/karaf.bat"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-setenv-${karaf.version}.patch"
                       originalfile="${project.build.directory}/assembly/bin/setenv"
                       failonerror="true"/>
                <copy file="${project.build.directory}/assembly/bin/setenv"
                      tofile="${project.build.directory}/classes/bin/setenv"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-setenv.bat.patch"
                       originalfile="${project.build.directory}/assembly/bin/setenv.bat"
                       failonerror="true"/>
                <copy file="${project.build.directory}/assembly/bin/setenv.bat"
                      tofile="${project.build.directory}/classes/bin/setenv.bat"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-quiesce-${karaf.version}.patch"
                       originalfile="${project.build.directory}/assembly/system/org/apache/karaf/features/standard/${karaf.version}/standard-${karaf.version}-features.xml"
                       failonerror="true"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-javax-mail-${karaf.version}.patch"
                       originalfile="${project.build.directory}/assembly/system/org/apache/karaf/features/standard/${karaf.version}/standard-${karaf.version}-features.xml"
                       failonerror="true"/>
                <copy file="${project.build.directory}/assembly/system/org/apache/karaf/features/standard/${karaf.version}/standard-${karaf.version}-features.xml"
                      tofile="${project.build.directory}/classes/system/org/apache/karaf/features/standard/${karaf.version}/standard-${karaf.version}-features.xml"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-paxweb.patch"
                       originalfile="${project.build.directory}/assembly/system/org/ops4j/pax/web/pax-web-features/4.3.0/pax-web-features-4.3.0-features.xml"
                       failonerror="true"/>
                <copy file="${project.build.directory}/assembly/system/org/ops4j/pax/web/pax-web-features/4.3.0/pax-web-features-4.3.0-features.xml"
                      tofile="${project.build.directory}/classes/system/org/ops4j/pax/web/pax-web-features/4.3.0/pax-web-features-4.3.0-features.xml"/>
                <patch patchfile="${project.basedir}/src/main/patches/karaf-etc-startup-properties-4.0.9.patch"
                       originalfile="${project.build.directory}/assembly/etc/startup.properties"
                       failonerror="true"/>
                <echo file="${project.build.directory}/assembly/etc/system.properties" append="true">mvn\:org.osgi/org.osgi.service.event/1.3.1 = 8</echo>
                <copy file="${project.build.directory}/assembly/etc/startup.properties"
                      tofile="${project.build.directory}/classes/etc/startup.properties"/>
                <fixcrlf srcdir="${project.build.directory}/classes/bin"
                         includes="*.bat" eol="crlf"/>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <goals>
              <goal>copy</goal>
            </goals>
            <phase>generate-resources</phase>
            <configuration>
              <artifactItems>
                <!-- Needs to be copied to lib/ext in order to start bouncy provider for mina sshd -->
                <artifactItem>
                    <groupId>org.bouncycastle</groupId>
                    <artifactId>bcprov-jdk15on</artifactId>
                    <version>${bouncycastle.version}</version>
                    <outputDirectory>target/classes/lib/ext</outputDirectory>
                    <destFileName>bcprov-jdk15on-${bouncycastle.version}.jar</destFileName>
                </artifactItem>
                <artifactItem>
                    <groupId>org.bouncycastle</groupId>
                    <artifactId>bcpkix-jdk15on</artifactId>
                    <version>${bouncycastle.version}</version>
                    <outputDirectory>target/classes/lib/ext</outputDirectory>
                    <destFileName>bcpkix-jdk15on-${bouncycastle.version}.jar</destFileName>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-artifacts</id>
            <goals>
              <goal>attach-artifact</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <artifacts>
                <artifact>
                  <file>src/main/assembly/etc/org.ops4j.pax.url.mvn.cfg</file>
                  <type>properties</type>
                  <classifier>config</classifier>
                </artifact>
              </artifacts>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!-- We do this here only so that we can patch a few files,
             but we then "throw away" (do not package) most of it,
             as the karaf4-parent will do this again                -->
        <groupId>org.apache.karaf.tooling</groupId>
        <artifactId>karaf-maven-plugin</artifactId>
        <version>${karaf.plugin.version}</version>
        <executions>
          <execution>
            <id>process-resources</id>
            <phase>process-resources</phase>
            <goals>
              <goal>assembly</goal>
            </goals>
          </execution>
      </executions>
      </plugin>
      <!-- This needs to execute before patching, otherwise the feature will be left unpatched -->
      <plugin>
        <groupId>org.opendaylight.odlparent</groupId>
        <artifactId>karaf-plugin</artifactId>
        <version>2.0.3</version>
        <executions>
          <execution>
            <id>populate-local-repo</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>populate-local-repo</goal>
            </goals>
            <configuration>
              <localRepo>${project.build.directory}/assembly/system</localRepo>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
