<?xml version="1.0"?>
<!--
================================================================================
Copyright (c) 2018-2019 AT&T Intellectual Property. 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.
============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.dcaegen2.deployments</groupId>
    <artifactId>deployments</artifactId>
    <version>1.2.0-SNAPSHOT</version>
  </parent>
  <groupId>org.onap.dcaegen2.deployments</groupId>
  <artifactId>tls-init-container</artifactId>
  <name>dcaegen2-deployments-tls-init-container</name>
  <version>2.1.0</version>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sonar.skip>true</sonar.skip>
    <sonar.sources>.</sonar.sources>
    <!-- customize the SONARQUBE URL -->
    <!-- sonar.host.url>http://localhost:9000</sonar.host.url -->
    <!-- below are language dependent -->
    <!-- for Python -->
    <sonar.language>py</sonar.language>
    <sonar.pluginName>Python</sonar.pluginName>
    <sonar.inclusions>**/*.py</sonar.inclusions>
    <!-- for JavaScaript -->
    <!--
    <sonar.language>js</sonar.language>
    <sonar.pluginName>JS</sonar.pluginName>
    <sonar.inclusions>**/*.js</sonar.inclusions>
    -->
  </properties>
  <build>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <plugins>
      <!-- plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4.1</version>
        <configuration>
          <descriptors>
            <descriptor>assembly/dep.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin -->
      <!-- now we configure custom action (calling a script) at various lifecycle phases -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
          <execution>
            <id>clean phase script</id>
            <phase>clean</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <arguments>
                <argument>${project.artifactId}</argument>
                <argument>clean</argument>
              </arguments>
            </configuration>
          </execution>
          <execution>
            <id>generate-sources script</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <arguments>
                <argument>${project.artifactId}</argument>
                <argument>generate-sources</argument>
              </arguments>
            </configuration>
          </execution>
          <execution>
            <id>compile script</id>
            <phase>compile</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <arguments>
                <argument>${project.artifactId}</argument>
                <argument>compile</argument>
              </arguments>
            </configuration>
          </execution>
          <execution>
            <id>package script</id>
            <phase>package</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <arguments>
                <argument>${project.artifactId}</argument>
                <argument>package</argument>
              </arguments>
            </configuration>
          </execution>
          <execution>
            <id>test script</id>
            <phase>test</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <arguments>
                <argument>${project.artifactId}</argument>
                <argument>test</argument>
              </arguments>
            </configuration>
          </execution>
          <execution>
            <id>install script</id>
            <phase>install</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <arguments>
                <argument>${project.artifactId}</argument>
                <argument>install</argument>
              </arguments>
            </configuration>
          </execution>
          <execution>
            <id>deploy script</id>
            <phase>deploy</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <arguments>
                <argument>${project.artifactId}</argument>
                <argument>deploy</argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
