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

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <artifactId>zeppelin</artifactId>
    <groupId>org.apache.zeppelin</groupId>
    <version>0.9.0-preview1</version>
    <relativePath>..</relativePath>
  </parent>

  <groupId>org.apache.zeppelin</groupId>
  <artifactId>zeppelin-web-angular</artifactId>
  <packaging>war</packaging>
  <version>0.9.0-preview1</version>
  <name>Zeppelin: web angular Application</name>

  <!-- See https://github.com/eirslett/frontend-maven-plugin/issues/229 -->
  <prerequisites>
    <maven>3.1.0</maven>
  </prerequisites>

  <properties>
    <web.e2e.disabled>true</web.e2e.disabled>
    <web.e2e.enabled>false</web.e2e.enabled>
    <zeppelin.daemon.package.base>../bin</zeppelin.daemon.package.base>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!--plugin versions-->
    <plugin.frontend.nodeDownloadRoot>https://nodejs.org/dist/</plugin.frontend.nodeDownloadRoot>
    <plugin.frontend.npmDownloadRoot>https://registry.npmjs.org/npm/-/</plugin.frontend.npmDownloadRoot>
  </properties>

  <build>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <warSourceDirectory>dist\zeppelin</warSourceDirectory>
          <webXml>dist\zeppelin\WEB-INF\web.xml</webXml>
        </configuration>
      </plugin>

      <plugin>
        <groupId>com.github.eirslett</groupId>
        <artifactId>frontend-maven-plugin</artifactId>
        <version>${plugin.frontend.version}</version>
        <configuration>
          <nodeDownloadRoot>${plugin.frontend.nodeDownloadRoot}</nodeDownloadRoot>
          <npmDownloadRoot>${plugin.frontend.npmDownloadRoot}</npmDownloadRoot>
        </configuration>

        <executions>
          <execution>
            <id>install node</id>
            <goals>
              <goal>install-node-and-npm</goal>
            </goals>
            <configuration>
              <nodeVersion>${node.version}</nodeVersion>
              <npmVersion>${npm.version}</npmVersion>
            </configuration>
          </execution>

          <execution>
            <id>npm install</id>
            <goals>
              <goal>npm</goal>
            </goals>
            <configuration>
              <skip>${web.e2e.enabled}</skip>
              <arguments>install --no-lockfile</arguments>
            </configuration>
          </execution>

          <execution>
            <id>npm build</id>
            <goals>
              <goal>npm</goal>
            </goals>
            <configuration>
              <skip>${web.e2e.enabled}</skip>
              <arguments>run build</arguments>
            </configuration>
          </execution>

          <execution>
            <id>npm test</id>
            <goals>
              <goal>npm</goal>
            </goals>
            <phase>test</phase>
            <configuration>
              <skip>${web.e2e.disabled}</skip>
              <arguments>run test</arguments>
            </configuration>
          </execution>

            <execution>
              <id>npm e2e</id>
              <goals>
                <goal>npm</goal>
              </goals>
              <phase>integration-test</phase>
              <configuration>
                <skip>${web.e2e.disabled}</skip>
                <arguments>run e2e</arguments>
              </configuration>
            </execution>

        </executions>
      </plugin>

      <!--
          Disabling test report generation as it forks the lifecycle
          and results in https://issues.apache.org/jira/browse/ZEPPELIN-69

          There is no better way to do it, as per
          https://jira.codehaus.org/browse/MCOBERTURA-154
      -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>cobertura</id>
            <phase>none</phase>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
      </plugin>

      <plugin>
        <!-- clean task will be executed by front-end-maven plugin -->
        <artifactId>maven-clean-plugin</artifactId>
        <configuration>
          <filesets>
            <fileset>
              <directory>node</directory>
            </fileset>
            <fileset>
              <directory>node_modules</directory>
            </fileset>
          </filesets>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>${plugin.resource.version}</version>
      </plugin>
    </plugins>
  </build>

</project>
