<!--
  ~ Copyright (c) 2017 CEA.
  ~ 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
  ~
  ~ Contributors:
  ~    CEA - initial API and implementation
  -->

<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.eclipse.sensinact.gateway</groupId>
        <artifactId>parent</artifactId>
        <version>2.0-SNAPSHOT</version>
    </parent>

	<artifactId>sensinact-generic</artifactId>
	<packaging>bundle</packaging>
	
	<name>sensiNact IoT Gateway - Generic implementation</name>

	<dependencies>
        <dependency>
            <groupId>org.eclipse.sensinact.gateway</groupId>
            <artifactId>sensinact-core</artifactId>
            <version>${project.version}</version>
            <scope>compile</scope>
        </dependency>
		<dependency>
	    	<groupId>org.eclipse.sensinact.gateway.tools</groupId>
	    	<artifactId>sensinact-test</artifactId>
	        <version>${project.version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.felix</groupId>
			<artifactId>org.apache.felix.main</artifactId>
			<version>${felix.version}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
			    <groupId>org.apache.maven.plugins</groupId>
			    <artifactId>maven-antrun-plugin</artifactId>
			    <version>1.8</version>
			    <executions>
			        <execution>
			            <id>createClassesDir</id>
			            <phase>test-compile</phase>
			            <configuration>
			                <target>
			                    <mkdir dir="${project.build.directory}/felix/tmp" />
			                    <mkdir dir="${project.build.directory}/felix/tmp1" />
			                    <mkdir dir="${project.build.directory}/felix/tmp2" />
			                    <mkdir dir="${project.build.directory}/extra-test-classes" />
			                    <mkdir dir="${project.build.directory}/extra-test-classes2" />
			                    <mkdir dir="${project.build.directory}/extra-test-classes3" />
			                    <mkdir dir="${project.build.directory}/extra-test-classes4" />
			                    <mkdir dir="${project.build.directory}/extra-test-classes5" />
			                    <mkdir dir="${project.build.directory}/extra-test-classes6" />
		                	    <javac fork="true" executable="${env.JAVA_HOME}/bin/javac"
		                	     srcdir="${project.basedir}/extra-src/test/java" 
		                	     destdir="${project.basedir}/target/extra-test-classes">
   									<classpath refid="maven.test.classpath"/>
   								</javac>
		                	    <javac fork="true" executable="${env.JAVA_HOME}/bin/javac"
		                	     srcdir="${project.basedir}/extra-src2/test/java" 
		                	     destdir="${project.basedir}/target/extra-test-classes2">
   									<classpath refid="maven.test.classpath"/>
   								</javac>
   								<javac fork="true" executable="${env.JAVA_HOME}/bin/javac"
		                	     srcdir="${project.basedir}/extra-src3/test/java" 
		                	     destdir="${project.basedir}/target/extra-test-classes3">
   									<classpath refid="maven.test.classpath"/>
   								</javac>
   								<javac fork="true" executable="${env.JAVA_HOME}/bin/javac"
		                	     srcdir="${project.basedir}/extra-src4/test/java" 
		                	     destdir="${project.basedir}/target/extra-test-classes4">
   									<classpath refid="maven.test.classpath"/>
   								</javac>
   								<!--
   								<javac fork="true" executable="${env.JAVA_HOME}/bin/javac"
		                	     srcdir="${project.basedir}/extra-src5/test/java" 
		                	     destdir="${project.basedir}/target/extra-test-classes5">
   									<classpath refid="maven.test.classpath"/>
   								</javac>
   								<javac fork="true" executable="${env.JAVA_HOME}/bin/javac"
		                	     srcdir="${project.basedir}/extra-src6/test/java" 
		                	     destdir="${project.basedir}/target/extra-test-classes6">
   									<classpath refid="maven.test.classpath"/>
   								</javac>
   								-->
			                </target>
			            </configuration>
			            <goals>
			                <goal>run</goal>
			            </goals>
			        </execution>
			    </executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>copy</goal>
						</goals>
						<phase>generate-test-resources</phase>
						<configuration>
							<artifactItems>
								<artifactItem>
									<groupId>org.apache.felix</groupId>
									<artifactId>org.apache.felix.fileinstall</artifactId>
									<version>${felix.fileinstall.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>org.apache.felix.fileinstall.jar</destFileName>
								</artifactItem>				
                                <artifactItem>
                                    <groupId>org.apache.felix</groupId>
                                    <artifactId>org.apache.felix.framework.security</artifactId>
                                    <version>2.4.0</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>org.apache.felix.framework.security.jar</destFileName>
                                </artifactItem>
								<artifactItem>
									<groupId>org.eclipse.sensinact.gateway</groupId>
									<artifactId>sensinact-utils</artifactId>
									<version>${project.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>sensinact-utils.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.eclipse.sensinact.gateway</groupId>
									<artifactId>sensinact-datastore-api</artifactId>
									<version>${project.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>sensinact-datastore-api.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.eclipse.sensinact.gateway</groupId>
									<artifactId>sensinact-common</artifactId>
									<version>${project.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>sensinact-common.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.eclipse.sensinact.gateway</groupId>
									<artifactId>sensinact-framework-extension</artifactId>
									<version>${project.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>sensinact-framework-extension.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.eclipse.sensinact.gateway</groupId>
									<artifactId>sensinact-security-none</artifactId>
									<version>${project.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>sensinact-security-none.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.eclipse.sensinact.gateway.tools</groupId>
									<artifactId>sensinact-test-configuration</artifactId>
									<version>${project.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>sensinact-test-configuration.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.eclipse.sensinact.gateway</groupId>
									<artifactId>sensinact-core</artifactId>
									<version>${project.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>sensinact-core.jar</destFileName>
								</artifactItem>
                                <artifactItem>
                                    <groupId>org.eclipse.sensinact.gateway</groupId>
                                    <artifactId>sensinact-signature-validator</artifactId>
                                    <version>${project.version}</version>
                                    <outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
                                    <destFileName>sensinact-signature-validator.jar</destFileName>
                                </artifactItem>
								<artifactItem>
									<groupId>org.eclipse.sensinact.gateway.nthbnd</groupId>
									<artifactId>sensinact-northbound-access</artifactId>
									<version>${project.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>sensinact-northbound-access.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.eclipse.sensinact.gateway.protocol</groupId>
									<artifactId>http</artifactId>
									<version>${project.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>http.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>javax.servlet</groupId>
									<artifactId>javax.servlet-api</artifactId>
									<version>3.1.0</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>javax.servlet-api.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.apache.felix</groupId>
									<artifactId>org.apache.felix.http.api</artifactId>
									<version>2.3.2</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>org.apache.felix.http.api.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.apache.felix</groupId>
									<artifactId>org.apache.felix.http.jetty</artifactId>
									<version>3.0.0</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>org.apache.felix.http.jetty.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.apache.felix</groupId>
									<artifactId>org.apache.felix.configadmin</artifactId>
									<version>${felix.configadmin.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>org.apache.felix.configadmin.jar</destFileName>
								</artifactItem>
								<artifactItem>
									<groupId>org.osgi</groupId>
									<artifactId>org.osgi.compendium</artifactId>
									<version>${osgi.compendium.version}</version>
									<outputDirectory>${project.build.directory}/felix/bundle</outputDirectory>
									<destFileName>org.osgi.compendium.jar</destFileName>
								</artifactItem>
							</artifactItems>
						</configuration>
					</execution>
				</executions>
				<extensions>true</extensions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.8</version>
				<executions>
					<execution>
						<phase>generate-test-resources</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<tasks>
								<echo>Copying keystore.jks</echo>
								<copy file="../sensinact-security/cert/keystore.jks"
                                      tofile="${project.build.directory}/felix/bundle/keystore.jks"/>
							</tasks>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.felix</groupId>
				<artifactId>maven-bundle-plugin</artifactId>
				<configuration>
					<instructions>
						<_exportcontents>*</_exportcontents>
						<_nouses>true</_nouses>
						<Include-Resource>
							about.html,
                            src/main/resources/
						</Include-Resource>
					</instructions>
				</configuration>
				<extensions>true</extensions>
				<executions>
					<execution>
						<goals>
							<goal>manifest</goal>
						</goals>
						<phase>generate-test-resources</phase>
						<configuration>
							<manifestLocation>${project.basedir}/target/generated-test-sources/META-INF</manifestLocation>
							<instructions>
								<_noee>true</_noee>
								<_exportcontents>*</_exportcontents>
								<_nouses>true</_nouses>
							</instructions>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
