<?xml version="1.0" encoding="UTF-8"?>
<!--
   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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.stanbol</groupId>
    <artifactId>apache-stanbol-enhancement-engines-uima</artifactId>
    <version>0.10.1-SNAPSHOT</version>
    <relativePath>..</relativePath>
  </parent>

  <artifactId>org.apache.stanbol.enhancer.engine.uimatotriples</artifactId>
  <name>Apache Stanbol Enhancement Engine : UIMA To Triples</name>
  <packaging>bundle</packaging>

  <scm>
    <connection>
      scm:svn:http://svn.apache.org/repos/asf/stanbol/branches/STANBOL-913/uima/uimatotriple
    </connection>
    <developerConnection>
      scm:svn:https://svn.apache.org/repos/asf/stanbol/branches/STANBOL-913/uima/uimatotriple
    </developerConnection>
    <url>http://stanbol.apache.org/</url>
  </scm>

  <build>
    <plugins>
      <plugin>
        <version>1.7.4</version>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-scr-plugin</artifactId>
        <executions>
          <execution>
            <id>generate-scr-scrdescriptor</id>
            <goals>
              <goal>scr</goal>
            </goals>
          </execution>
        </executions> 
      </plugin>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>2.2.0</version>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Export-Package>
              org.apache.stanbol.enhancer.engines.uimatotriples;version=${project.version}
            </Export-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.osgi.core</artifactId>
      <version>1.4.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.apache.felix.scr</artifactId>
      <version>1.6.0</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.felix</groupId>
      <artifactId>org.apache.felix.scr.annotations</artifactId>
      <version>1.6.0</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.stanbol</groupId>
      <artifactId>org.apache.stanbol.enhancer.servicesapi</artifactId>
      <version>0.10.0</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.6.1</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.clerezza</groupId>
      <artifactId>rdf.core</artifactId>
      <version>0.12-incubating</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>org.apache.stanbol</groupId>
      <artifactId>org.apache.stanbol.commons.caslight</artifactId>
      <version>0.11.0</version>
    </dependency>
  </dependencies>

  <profiles>
    <profile>
      <id>build-for-felix</id>
      <dependencies>
        <dependency>
          <groupId>org.apache.felix</groupId>
          <artifactId>org.apache.felix.main</artifactId>
          <version>3.0.7</version>
          <scope>provided</scope>
        </dependency>
        <!-- To include a shell:
        <dependency>
          <groupId>org.apache.felix</groupId>
          <artifactId>org.apache.felix.gogo.shell</artifactId>
          <version>0.6.1</version>
        </dependency>
        -->
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <executions>
              <execution>
                <id>compile</id>
                <phase>package</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <target>
                    <pathconvert property="plugins.jars" pathsep="${path.separator}">
                      <path refid="maven.runtime.classpath" />
                      <map from="${project.build.directory}${file.separator}classes" to="" />
                    </pathconvert>
                    <pathconvert pathsep=" " property="bundles">
                      <path path="${plugins.jars}" />
                      <mapper>
                        <chainedmapper>
                          <flattenmapper />
                          <globmapper from="*" to="file:modules/*" casesensitive="no" />
                        </chainedmapper>
                      </mapper>
                    </pathconvert>
                    <propertyfile file="${project.build.directory}/config.properties">
                      <entry key="felix.auto.start" value="${bundles} file:modules/${project.build.finalName}.jar" />
                      <entry key="org.osgi.framework.bootdelegation" value="*" />
                    </propertyfile>
                    <copy file="${maven.dependency.org.apache.felix.org.apache.felix.main.jar.path}" tofile="${project.build.directory}/felix.jar" />
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.2</version>
            <executions>
              <execution>
                <id>create-executable-jar</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <descriptors>
                    <descriptor>${basedir}/src/main/assembly/felix.xml</descriptor>
                  </descriptors>
                  <finalName>${project.build.finalName}</finalName>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>run-on-felix</id>
      <dependencies>
        <dependency>
          <groupId>org.apache.felix</groupId>
          <artifactId>org.apache.felix.main</artifactId>
          <version>3.0.7</version>
          <scope>provided</scope>
        </dependency>
        <!-- org.apache.felix:org.apache.felix.gogo.shell:0.6.1 useless from Maven since stdin is swallowed -->
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <configuration>
              <target>
                <property name="vm.args" value="" />
                <pathconvert property="plugins.jars" pathsep="${path.separator}">
                  <path refid="maven.runtime.classpath" />
                  <map from="${project.build.directory}${file.separator}classes" to="" />
                </pathconvert>
                <makeurl property="urls" separator=" ">
                  <path path="${plugins.jars}" />
                  <path location="${project.build.directory}/${project.build.finalName}.jar" />
                </makeurl>
                <propertyfile file="${project.build.directory}/run.properties">
                  <entry key="felix.auto.start" value="${urls}" />
                  <entry key="felix.auto.deploy.action" value="uninstall,install,update,start" />
                  <entry key="org.osgi.framework.storage" value="${project.build.directory}${file.separator}felix-cache" />
                  <entry key="org.osgi.framework.bootdelegation" value="*" />
                </propertyfile>
                <makeurl property="run.properties.url" file="${project.build.directory}/run.properties" />
                <java fork="true" jar="${maven.dependency.org.apache.felix.org.apache.felix.main.jar.path}">
                  <sysproperty key="felix.config.properties" value="${run.properties.url}" />
                  <jvmarg line="${vm.args}" />
                </java>
              </target>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
