<!--
  ============LICENSE_START=======================================================
   Copyright (C) 2018 Ericsson. All rights reserved.
  ================================================================================
  Licensed 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.

  SPDX-License-Identifier: Apache-2.0
  ============LICENSE_END=========================================================
-->

<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.onap.multicloud.framework</groupId>
        <artifactId>multicloud-framework-artifactbroker</artifactId>
        <version>1.7.0-SNAPSHOT</version>
    </parent>

    <artifactId>multicloud-framework-artifactbroker-package</artifactId>
    <name>${project.artifactId}</name>
    <description>[${project.parent.artifactId}]</description>

    <dependencies>
        <dependency>
            <groupId>org.onap.multicloud.framework</groupId>
            <artifactId>multicloud-framework-artifactbroker-main</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.multicloud.framework</groupId>
            <artifactId>multicloud-framework-artifactbroker-reception</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.multicloud.framework</groupId>
            <artifactId>multicloud-framework-artifactbroker-forwarding</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.multicloud.framework</groupId>
            <artifactId>multicloud-framework-artifactbroker-reception-plugins</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.onap.multicloud.framework</groupId>
            <artifactId>multicloud-framework-artifactbroker-forwarding-plugins</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>src/main/package/assembly.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>docker</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-resources-plugin</artifactId>
                        <version>3.1.0</version>
                        <executions>
                            <execution>
                                <id>copy-resources</id>
                                <phase>install</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <overwrite>true</overwrite>
                                    <nonFilteredFileExtensions>
                                        <nonFilteredFileExtension>zip</nonFilteredFileExtension>
                                        <nonFilteredFileExtension>jar</nonFilteredFileExtension>
                                    </nonFilteredFileExtensions>
                                    <outputDirectory>${project.basedir}/docker_target</outputDirectory>
                                    <resources>
                                        <resource>
                                            <directory>${project.basedir}/docker</directory>
                                            <filtering>true</filtering>
                                        </resource>
                                        <resource>
                                            <directory>${project.basedir}/target</directory>
                                            <filtering>true</filtering>
                                            <includes>
                                                 <include>*.zip</include>
                                                 <include>*.jar</include>
                                            </includes>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>3.0.0</version>
                        <executions>
                            <execution>
                                <phase>install</phase>
                                <inherited>false</inherited>
                                <configuration>
                                    <target>
                                        <exec executable="docker">
                                           <arg value="build"/>
                                           <arg value="-t"/>
                                           <arg value="${CONTAINER_PUSH_REGISTRY}/onap/multicloud/framework-artifactbroker:${project.version}"/>
                                           <arg value="docker_target"/>
                                        </exec>
                                        <exec executable="docker">
                                            <arg value="tag"/>
                                            <arg value="${CONTAINER_PUSH_REGISTRY}/onap/multicloud/framework-artifactbroker:${project.version}"/>
                                            <arg value="${CONTAINER_PUSH_REGISTRY}/onap/multicloud/framework-artifactbroker:latest"/>
                                        </exec>
                                        <exec executable="docker">
                                            <arg value="push"/>
                                            <arg value="${CONTAINER_PUSH_REGISTRY}/onap/multicloud/framework-artifactbroker:${project.version}"/>
                                        </exec>
                                        <exec executable="docker">
                                            <arg value="push"/>
                                            <arg value="${CONTAINER_PUSH_REGISTRY}/onap/multicloud/framework-artifactbroker:latest"/>
                                        </exec>
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
        </profile>
    </profiles>
</project>
