<?xml version="1.0" encoding="UTF-8"?>
<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">

  <parent>
    <groupId>io.fd.honeycomb.common</groupId>
    <artifactId>minimal-distribution-parent</artifactId>
    <version>1.17.07</version>
  </parent>

  <modelVersion>4.0.0</modelVersion>
  <groupId>org.onap.demo.vnf.vlb</groupId>
  <artifactId>vlb-vnf-onap-distribution</artifactId>
  <version>1.2.0</version>

  <properties>
    <nexusproxy>http://nexus.fd.io/content</nexusproxy>
    <start.script.template>
#!/bin/sh -
%s
    </start.script.template>

    <exec.parameters>-Xms128m -Xmx128m</exec.parameters>
    <main.class>io.fd.honeycomb.infra.distro.Main</main.class>
    <interfaces.mapping.version>1.17.07</interfaces.mapping.version>
    <honeycomb.min.distro.version>1.17.07</honeycomb.min.distro.version>
    <!--
       Defines list of specific modules provided by the distribution
       (adds them to base modules like NetconfModule and RestconfModule).

       Module configuration is placed in 'modules' subdir of the target distro folder.
       Modules can be disabled by commenting them out in the pom.xml
       or modules configuration file.
     -->
    <distribution.modules>
      org.onap.vnf.vlb.Module
      org.onap.vnf.health.Module
    </distribution.modules>
  </properties>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <!-- Use google's error-prone static analysis-->
          <compilerId>javac-with-errorprone</compilerId>
          <forceJavacCompilerUse>true</forceJavacCompilerUse>
          <showWarnings>true</showWarnings>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.codehaus.plexus</groupId>
            <artifactId>plexus-compiler-javac-errorprone</artifactId>
            <version>2.5</version>
          </dependency>
          <!-- override plexus-compiler-javac-errorprone's dependency on
               Error Prone with the latest version -->
          <dependency>
            <groupId>com.google.errorprone</groupId>
            <artifactId>error_prone_core</artifactId>
            <version>2.0.9</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>${main.class}</mainClass>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              <useUniqueVersions>false</useUniqueVersions>
              <classpathMavenRepositoryLayout>true</classpathMavenRepositoryLayout>
            </manifest>
            <manifestEntries>
              <Class-Path>config/ cert/ modules/ yang-mapping/</Class-Path>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <outputDirectory>${project.build.directory}/lib</outputDirectory>
              <useBaseVersion>true</useBaseVersion>
              <useRepositoryLayout>true</useRepositoryLayout>
              <excludeArtifactIds>yang-jmx-generator</excludeArtifactIds>
            </configuration>
           </execution>
           <execution>
             <id>unpack-configuration</id>
             <phase>prepare-package</phase>
             <goals>
               <goal>unpack-dependencies</goal>
             </goals>
             <configuration>
               <includes>**/honeycomb-minimal-resources/</includes>
               <outputDirectory>${project.build.outputDirectory}/</outputDirectory>
             </configuration>
           </execution>
         </executions>
      </plugin>

      <!-- Generate shell script -->
      <plugin>
        <groupId>org.codehaus.gmaven</groupId>
        <artifactId>groovy-maven-plugin</artifactId>
        <version>2.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>execute</goal>
            </goals>
            <configuration>
              <source>
                import java.nio.file.Paths

                log.info "Generating shell exec script"
                def scriptTemplate = properties.getOrDefault("start.script.template", "")
                def args = properties.getOrDefault("exec.parameters", "")
                log.debug "Additional shell exec script properties: ${args}"
                def javaArgs = "${args} -jar \$(dirname \$0)/${project.artifactId}-${project.version}.jar"
                def scriptParent = Paths.get(project.build.outputDirectory, "honeycomb-minimal-resources")
                scriptParent.toFile().mkdirs()
                def scriptContent = "java " + javaArgs
                log.info "Generating shell exec script as ${scriptContent}"
                def scriptPath = Paths.get(scriptParent.toString(), "honeycomb")
                log.info "Writing shell exec script to ${scriptPath}"
                scriptPath.toFile().text = String.format(scriptTemplate, scriptContent)
                scriptPath.toFile().setExecutable(true)

                scriptPath = Paths.get(scriptParent.toString(), "honeycomb-start")
                log.info "Writing shell exec script to ${scriptPath}"
                scriptPath.toFile().text = "\$(dirname \$0)/honeycomb &amp;"
                scriptPath.toFile().setExecutable(true)

                def debug_args = properties.getOrDefault("debug.parameters", "")
                def debugScriptContent = "java" + " ${debug_args} " + javaArgs
                log.info "Generating shell debug script as ${debugScriptContent}"
                scriptPath = Paths.get(scriptParent.toString(), "honeycomb-debug")
                log.info "Writing shell debug script to ${scriptPath}"
                scriptPath.toFile().text = String.format(scriptTemplate, debugScriptContent)
                scriptPath.toFile().setExecutable(true)
              </source>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>io.fd.honeycomb.common</groupId>
            <artifactId>minimal-assembly-descriptor</artifactId>
            <version>1.17.07</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>create-archive</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
            <configuration>
              <descriptorRefs>
                <descriptorRef>honeycomb-minimal</descriptorRef>
              </descriptorRefs>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <configuration>
          <skip>false</skip>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <configuration>
          <skip>false</skip>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>none</phase>
          </execution>
        </executions>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <!-- Dependency on sample plugin -->
    <dependency>
      <groupId>org.onap.demo.vnf.vlb</groupId>
      <artifactId>vlb-business-vnf-onap-plugin-impl</artifactId>
      <version>${interfaces.mapping.version}</version>
    </dependency>
    <dependency>
      <groupId>org.onap.demo.vnf.health</groupId>
      <artifactId>health-vnf-onap-plugin-impl</artifactId>
      <version>${interfaces.mapping.version}</version>
    </dependency>
    <!-- Dependency on distribution base -->
    <dependency>
      <groupId>io.fd.honeycomb</groupId>
      <artifactId>minimal-distribution</artifactId>
      <version>${honeycomb.min.distro.version}</version>
    </dependency>
  </dependencies>
</project>