<?xml version="1.0"?>

<!--
    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 name="demo" default="default" xmlns:artifact="antlib:org.apache.maven.artifact.ant">

  <description>
    Simple example code
  </description>

  <property name="demo.name" value="lucene-demos-${version}"/>

  <import file="../module-build.xml"/>

  <target name="init" depends="module-build.init,jar-lucene-core"/>
  
  <path id="classpath">
   <pathelement path="${analyzers-common.jar}"/>
   <pathelement path="${queryparser.jar}"/>
   <pathelement path="${lucene-core.jar}"/>
   <pathelement path="${queries.jar}"/>
   <pathelement path="${facet.jar}"/>
   <pathelement path="${expressions.jar}"/>
   <fileset dir="../expressions/lib"/>
   <fileset dir="lib"/>
  </path>

  <target name="javadocs" depends="javadocs-analyzers-common,javadocs-queryparser,javadocs-facet,javadocs-expressions,compile-core,check-javadocs-uptodate"
          unless="javadocs-uptodate-${name}">
    <!-- we link the example source in the javadocs, as it's ref'ed elsewhere -->
    <invoke-module-javadoc linksource="yes">
      <links>
        <link href="../analyzers-common"/>
        <link href="../queryparser"/>
        <link href="../queries"/>
        <link href="../facet"/>
        <link href="../expressions"/>
      </links>
    </invoke-module-javadoc>
  </target>

  <!-- we don't check for sysout in demo, because the demo is there to use sysout :-) -->
  <target name="-check-forbidden-sysout"/>

  <target name="compile-core" depends="jar-analyzers-common,jar-queryparser,jar-queries,jar-facet,jar-expressions,common.compile-core" />

  <target name="default" depends="jar-core,build-web-demo"/>

  <target name="build-artifacts-and-tests" depends="jar, compile-test,build-web-demo" />

  <target name="build-web-demo"  description="Compiles demo">
    <echo>Compiling XML QueryParser Demo WAR</echo>

    <war destfile="${build.dir}/lucene-xml-query-demo.war" webxml="src/resources/org/apache/lucene/demo/xmlparser/WEB-INF/web.xml">
      <fileset dir="${resources.dir}/org/apache/lucene/demo/xmlparser/"/>
      <lib dir="${build.dir}">
        <include name="${final.name}.jar"/>
      </lib>
      <lib file="${queries.jar}"/>
      <lib file="${queryparser.jar}"/>
      <lib file="${lucene-core.jar}"/>
      <lib file="${facet.jar}"/>
    </war>
  </target>
  
</project>
