<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You 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 basedir="." default="build" name="logsearch">
  <property environment="env"/>
  <property name="debuglevel" value="source,lines,vars"/>
  <dirname property="builddir" file="build.xml"/>
  <property name="target" value="1.7"/>
  <property name="source" value="1.7"/>
  <property file="local.properties"/>
  <property file="build.properties"/>

  <target name="init">
  </target>
  <target name="build"/>
  <target name="create-dev-war">
    <copy todir="${app.target.dir}" includeEmptyDirs="no">
      <fileset dir="src/main/webapp" excludes="**/*.class"/>
    </copy>
  </target>

  <target name="package">
    <delete dir="target/package"/>
    <copy todir="target/package/libs" includeEmptyDirs="no">
      <fileset dir="target/libs"/>
    </copy>
    <copy todir="target/package/classes" includeEmptyDirs="no">
      <fileset dir="target/classes"/>
    </copy>
    <copy todir="target/package/solr_configsets" includeEmptyDirs="yes">
      <fileset dir="src/main/configsets"/>
    </copy>
    <copy todir="target/package" includeEmptyDirs="no">
      <fileset file="src/main/scripts/*"/>
    </copy>
    <chmod file="target/package/*.sh" perm="755"/>
    <tar compression="gzip" destfile="target/ambari-logsearch-portal.tar.gz">
      <tarfileset mode="755" dir="target/package">
        <include name="*.sh"/>
      </tarfileset>
      <tarfileset mode="664" dir="target/package">
        <exclude name="*.sh"/>
      </tarfileset>
    </tar>

  </target>


  <target description="Build all projects which reference this project. Useful to propagate changes."
          name="build-refprojects"/>
</project>
