<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
 * Copyright (c) Codice Foundation
 *
 * This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either
 * version 3 of the License, or any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details. A copy of the GNU Lesser General Public License is distributed along with this program and can be found at
 * <http://www.gnu.org/licenses/lgpl.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>
        <artifactId>distribution</artifactId>
        <groupId>ddf</groupId>
        <version>2.26.46</version>
    </parent>
    <!--
    Packages the DDF configured Karaf.

    This is the DDF distribution with the smallest footprint and the building block for other
    DDF distributions, i.e., ddf distribution pom depends on this pom.

    NOTE: This was originally called ddf-minimal based on the Apache Servicemix paradigm, but was later
    changed to kernel.
    -->
    <artifactId>kernel</artifactId>
    <groupId>org.codice.ddf</groupId>
    <name>DDF :: Distribution :: Kernel</name>
    <packaging>pom</packaging>
    <properties>
        <karaf.folder>apache-karaf-${karaf.version}</karaf.folder>
        <setup.folder>target/dependencies</setup.folder>
        <win.setup.folder>target/temp/win</win.setup.folder>
        <!-- The name of the distribution zip file to generate in the /target directory -->
        <distribution.file.name>ddf-${project.artifactId}-${project.version}
        </distribution.file.name>
        <pro-grade.version>1.1.3</pro-grade.version>
        <org.apache.aries.version>1.1.7</org.apache.aries.version>
    </properties>
    <build>
        <resources>
            <!--
            Resources for this DDF Kernel distribution include the Apache Karaf .cfg file that
            defines the feature repositories and list of features to install at startup.
            -->
            <resource>
                <directory>src/main/filtered-resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <!--
            Resources plugin will do filtering on dirs/files specified in
            <resources> above. This will result in these files being
            filtered and their generated resource being placed in target/classes
            directory.
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>filter</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>resources</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.karaf.tooling</groupId>
                <artifactId>karaf-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>features-add-to-repository</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>features-add-to-repository</goal>
                        </goals>
                        <configuration>
                            <descriptors>
                                <descriptor>mvn:ddf.features/kernel/${project.version}/xml/features</descriptor>
                            </descriptors>
                            <repository>${setup.folder}/${karaf.folder}/system</repository>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>minimal-copy</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>ddf.distribution</groupId>
                                    <artifactId>console-branding</artifactId>
                                    <version>${project.version}</version>
                                    <outputDirectory>${setup.folder}</outputDirectory>
                                    <destFileName>ddf-branding.jar</destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.bouncycastle</groupId>
                                    <artifactId>bcprov-jdk15on</artifactId>
                                    <version>${bouncy.version}</version>
                                    <outputDirectory>${setup.folder}/ext</outputDirectory>
                                    <destFileName>bcprov-${bouncy.version}.jar</destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.bouncycastle</groupId>
                                    <artifactId>bcmail-jdk15on</artifactId>
                                    <version>${bouncy.version}</version>
                                    <outputDirectory>${setup.folder}/ext</outputDirectory>
                                    <destFileName>bcmail-${bouncy.version}.jar</destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.bouncycastle</groupId>
                                    <artifactId>bcpkix-jdk15on</artifactId>
                                    <version>${bouncy.version}</version>
                                    <outputDirectory>${setup.folder}/ext</outputDirectory>
                                    <destFileName>bcpkix-${bouncy.version}.jar</destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.codice.pro-grade</groupId>
                                    <artifactId>pro-grade</artifactId>
                                    <version>${pro-grade.version}</version>
                                    <outputDirectory>${setup.folder}/ext</outputDirectory>
                                    <destFileName>pro-grade-${pro-grade.version}.jar</destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>jakarta.annotation</groupId>
                                    <artifactId>jakarta.annotation-api</artifactId>
                                    <version>${javax.annotation-api.version}</version>
                                    <outputDirectory>${setup.folder}/ext</outputDirectory>
                                    <destFileName>
                                        jakarta.annotation-api-${javax.annotation-api.version}.jar
                                    </destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>com.google.code.findbugs</groupId>
                                    <artifactId>jsr305</artifactId>
                                    <version>${jsr305.version}</version>
                                    <outputDirectory>${setup.folder}/ext</outputDirectory>
                                    <destFileName>
                                        jsr305-${jsr305.version}.jar
                                    </destFileName>
                                </artifactItem>
                                <!-- Crypter dependencies -->
                                <artifactItem>
                                    <groupId>com.google.crypto.tink</groupId>
                                    <artifactId>tink</artifactId>
                                    <version>${tink.version}</version>
                                    <outputDirectory>${setup.folder}/ext</outputDirectory>
                                    <destFileName>tink-${tink.version}.jar</destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>com.google.protobuf</groupId>
                                    <artifactId>protobuf-java</artifactId>
                                    <version>${protobuf.version}</version>
                                    <outputDirectory>${setup.folder}/ext</outputDirectory>
                                    <destFileName>
                                        protobuf-java-${protobuf.version}.jar
                                    </destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.json</groupId>
                                    <artifactId>json</artifactId>
                                    <version>${org.json.version}</version>
                                    <outputDirectory>${setup.folder}/ext</outputDirectory>
                                    <destFileName>json-${org.json.version}.jar</destFileName>
                                </artifactItem>
                                <!-- End crypter dependencies -->
                                <artifactItem>
                                    <groupId>ddf.platform.osgi</groupId>
                                    <artifactId>platform-osgi-condpermadmin</artifactId>
                                    <version>${project.version}</version>
                                    <outputDirectory>
                                        ${setup.folder}/system/ddf/platform/osgi/platform-osgi-condpermadmin/${project.version}
                                    </outputDirectory>
                                    <destFileName>
                                        platform-osgi-condpermadmin-${project.version}.jar
                                    </destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.eclipse.platform</groupId>
                                    <artifactId>org.eclipse.osgi</artifactId>
                                    <version>${equinox.version}</version>
                                    <outputDirectory>
                                        ${setup.folder}/system/org/eclipse/platform/org.eclipse.osgi/${equinox.version}
                                    </outputDirectory>
                                    <destFileName>
                                        org.eclipse.osgi-${equinox.version}.jar
                                    </destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.aries.proxy</groupId>
                                    <artifactId>org.apache.aries.proxy</artifactId>
                                    <version>${org.apache.aries.version}</version>
                                    <outputDirectory>
                                        ${setup.folder}/system/org/apache/aries/proxy/org.apache.aries.proxy/${org.apache.aries.version}
                                    </outputDirectory>
                                    <destFileName>
                                        org.apache.aries.proxy-${org.apache.aries.version}.jar
                                    </destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.codice.acdebugger</groupId>
                                    <artifactId>acdebugger-api</artifactId>
                                    <version>${acdebugger.version}</version>
                                    <outputDirectory>
                                        ${setup.folder}/system/org/codice/acdebugger/acdebugger-api/${acdebugger.version}
                                    </outputDirectory>
                                    <destFileName>
                                        acdebugger-api-${acdebugger.version}.jar
                                    </destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.codice.acdebugger</groupId>
                                    <artifactId>acdebugger-backdoor</artifactId>
                                    <version>${acdebugger.version}</version>
                                    <outputDirectory>
                                        ${setup.folder}/system/org/codice/acdebugger/acdebugger-backdoor/${acdebugger.version}
                                    </outputDirectory>
                                    <destFileName>
                                        acdebugger-backdoor-${acdebugger.version}.jar
                                    </destFileName>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.servicemix.bundles</groupId>
                                    <artifactId>org.apache.servicemix.bundles.xerces</artifactId>
                                    <version>${xerces.bundle.version}</version>
                                    <outputDirectory>${setup.folder}/endorsed</outputDirectory>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.servicemix.specs</groupId>
                                    <artifactId>org.apache.servicemix.specs.saaj-api-1.3</artifactId>
                                    <version>${servicemix.specs.version}</version>
                                    <outputDirectory>${setup.folder}/endorsed</outputDirectory>
                                </artifactItem>
                                <!-- Can't use servicemix bundle because of https://issues.apache.org/jira/browse/SM-4352 -->
                                <artifactItem>
                                    <groupId>jakarta.activation</groupId>
                                    <artifactId>jakarta.activation-api</artifactId>
                                    <version>${jakarta.activation.version}</version>
                                    <outputDirectory>${setup.folder}/endorsed</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                    <execution>
                        <id>unpack</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <!-- Uncompress the Solr default configset -->
                                <artifactItem>
                                    <groupId>ddf.platform.solr</groupId>
                                    <artifactId>solr-schema</artifactId>
                                    <version>${project.version}</version>
                                    <type>jar</type>
                                    <outputDirectory>${setup.folder}</outputDirectory>
                                </artifactItem>
                                <!-- Uncompress the unix Karaf distribution -->
                                <artifactItem>
                                    <groupId>org.apache.karaf</groupId>
                                    <artifactId>apache-karaf</artifactId>
                                    <version>${karaf.version}</version>
                                    <type>tar.gz</type>
                                    <outputDirectory>${setup.folder}</outputDirectory>
                                </artifactItem>
                                <!-- Uncompress the windows Karaf distribution (for the bat scripts) -->
                                <artifactItem>
                                    <groupId>org.apache.karaf</groupId>
                                    <artifactId>apache-karaf</artifactId>
                                    <version>${karaf.version}</version>
                                    <type>zip</type>
                                    <outputDirectory>${win.setup.folder}</outputDirectory>
                                </artifactItem>
                                <!--
                                Unpacks zip created by ddf-common that includes the license files,
                                Karaf .cfg files that DDF customizes, DDF startup scripts, and the
                                common assembly descriptor (common-bin.xml)
                                -->
                                <artifactItem>
                                    <groupId>org.codice.ddf</groupId>
                                    <artifactId>ddf-common</artifactId>
                                    <version>${project.version}</version>
                                    <type>jar</type>
                                    <outputDirectory>${setup.folder}</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!--
            Uses the assembly descriptor in this DDF distribution project (bin.xml) which
            also injects the copied common-bin.xml descriptor from ddf-common, to create
            the ddf-kernel-xxx.zip distribution in the /target directory.
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>bin</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archiverConfig>
                                <duplicateBehavior>skip</duplicateBehavior>
                            </archiverConfig>
                            <descriptors>
                                <descriptor>src/main/descriptors/bin.xml</descriptor>
                            </descriptors>
                            <appendAssemblyId>false</appendAssemblyId>
                            <finalName>${distribution.file.name}</finalName>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <!--
        Depends on the base Apache Karaf Unix and Windows distribution zip files.
        This is from where all of the Karaf .cfg, .properties, and other files are extracted.
        -->
        <dependency>
            <groupId>org.apache.karaf</groupId>
            <artifactId>apache-karaf</artifactId>
            <version>${karaf.version}</version>
            <type>tar.gz</type>
        </dependency>
        <dependency>
            <groupId>org.apache.karaf</groupId>
            <artifactId>apache-karaf</artifactId>
            <version>${karaf.version}</version>
            <type>zip</type>
        </dependency>
        <dependency>
            <groupId>org.apache.karaf.features</groupId>
            <artifactId>standard</artifactId>
            <version>${karaf.version}</version>
            <type>xml</type>
            <classifier>features</classifier>
        </dependency>
        <dependency>
            <groupId>ddf.distribution</groupId>
            <artifactId>console-branding</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.codice.ddf</groupId>
            <artifactId>ddf-common</artifactId>
            <version>${project.version}</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>ddf.platform.solr</groupId>
            <artifactId>solr-schema</artifactId>
            <version>${project.version}</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.codice.pro-grade</groupId>
            <artifactId>pro-grade</artifactId>
            <version>${pro-grade.version}</version>
            <type>jar</type>
        </dependency>
        <!-- If there's a dependency duplication warning here, it's lying -->
        <dependency>
            <groupId>ddf.platform.osgi</groupId>
            <artifactId>platform-osgi-configadmin</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>ddf.platform.osgi</groupId>
            <artifactId>platform-osgi-internal-api</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>ddf.platform.osgi</groupId>
            <artifactId>platform-osgi-condpermadmin</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.platform</groupId>
            <artifactId>org.eclipse.osgi</artifactId>
            <version>${equinox.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.aries.proxy</groupId>
            <artifactId>org.apache.aries.proxy</artifactId>
            <version>${org.apache.aries.version}</version>
        </dependency>
        <dependency>
            <groupId>org.codice.acdebugger</groupId>
            <artifactId>acdebugger-api</artifactId>
            <version>${acdebugger.version}</version>
        </dependency>
        <dependency>
            <groupId>org.codice.acdebugger</groupId>
            <artifactId>acdebugger-backdoor</artifactId>
            <version>${acdebugger.version}</version>
        </dependency>
        <dependency>
            <groupId>net.sf.saxon</groupId>
            <artifactId>Saxon-HE</artifactId>
            <version>${saxon.version}</version>
        </dependency>
        <dependency>
            <groupId>ddf.features</groupId>
            <artifactId>kernel</artifactId>
            <version>${project.version}</version>
            <classifier>features</classifier>
            <type>xml</type>
        </dependency>
        <dependency>
            <groupId>com.google.crypto.tink</groupId>
            <artifactId>tink</artifactId>
            <version>${tink.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>${protobuf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>${org.json.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.servicemix.specs</groupId>
            <artifactId>org.apache.servicemix.specs.jaxb-api-2.3</artifactId>
            <version>${servicemix.specs.jaxb.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.servicemix.bundles</groupId>
            <artifactId>org.apache.servicemix.bundles.jaxb-runtime</artifactId>
            <version>${servicemix.bundles.jaxb.version}</version>
        </dependency>
    </dependencies>
</project>
