<?xml version="1.0" encoding="UTF-8"?>
<!--

    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="java/maven">
    <description>Builds, tests, and runs the project org.netbeans.modules.maven</description>
    <import file="../../nbbuild/templates/projectized.xml"/>
    
    <target name="nblib" depends="init">
        <mkdir dir="build/mavenclasses"/>
        <property name="maven.embedder.dir" value="${maven.dir}"/>
        <javac srcdir="mavensrc" destdir="build/mavenclasses" 
            debug="${build.compiler.debug}" 
            deprecation="${build.compiler.deprecation}" 
            release="8"
            includeantruntime="false">
            <classpath>
                <fileset dir="${maven.embedder.dir}/maven/lib">
                    <include name="*.jar"/>
                </fileset>
                <fileset dir="${maven.embedder.dir}/maven/boot">
                    <include name="*.jar"/>
                </fileset>
                <pathelement location="./external/aether-api-1.13.1.jar"/>
            </classpath>
            <classpath refid="cp"/>
        </javac>
        <copy overwrite="true" tofile="build/mavenclasses/META-INF/plexus/components.xml" file="mavensrc/org/netbeans/modules/maven/workspace/reader/components.xml">
        </copy>
        <mkdir dir="${cluster}/maven-nblib"/>
        <jar jarfile="${cluster}/maven-nblib/netbeans-cos.jar" compress="false">
            <fileset dir="build/mavenclasses" >
                <include name="org/netbeans/modules/maven/workspace/reader/**"/>
                <include name="META-INF/plexus/**"/>
            </fileset>
        </jar>
        <copy overwrite="true" tofile="build/mavenclasses/META-INF/plexus/components.xml" file="mavensrc/org/netbeans/modules/maven/event/components.xml"/>
        <!-- we use jarjar to repackage simple json, to avoid clashes with 3rd party maven plugins possibly including it in their dependencies -->
        <taskdef name="jarjar" classname="org.pantsbuild.jarjar.JarJarTask" loaderref="lib.path.loader">
            <classpath>
                <pathelement location="${libs.asm.dir}/core/asm-9.5.jar"/>
                <pathelement location="${libs.asm.dir}/core/asm-commons-9.5.jar"/>
                <pathelement location="./external/jarjar-1.7.2.jar"/>
            </classpath>
        </taskdef>
        <jarjar jarfile="${cluster}/maven-nblib/netbeans-eventspy.jar" compress="false">
            <fileset dir="build/mavenclasses" >
                <include name="org/netbeans/modules/maven/event/**"/>
                <include name="META-INF/plexus/**"/>
            </fileset>
            <zipfileset src="../../ide/libs.json_simple/external/json-simple-1.1.1.jar"/>
            <rule pattern="org.json.**" result="org.netbeans.shaded.json.@1"/>
        </jarjar>
    </target>

    <target name="netbeans-extra" depends="nblib"/>    



    <target name="do-unit-test-build" depends="projectized.do-unit-test-build">
        <macrodef name="package-artifact-from-dir">
             <attribute name="jarbasename"/>
             <attribute name="relpath"/>
             <sequential>
                 <jar destfile="${build.test.unit.dir}/data/@{relpath}/@{jarbasename}.jar">
                     <fileset dir="${build.test.unit.dir}/data/@{relpath}/@{jarbasename}.jardir" includes="**"/>
                 </jar>
             </sequential>
         </macrodef>
         
         <package-artifact-from-dir jarbasename="annotation-12.6" relpath="projects/processors/repo/grp/annotation/12.6"/>
         <package-artifact-from-dir jarbasename="test-lib-12.6" relpath="projects/processors/repo/grp/test-lib/12.6"/>
         <package-artifact-from-dir jarbasename="test-lib2-12.6" relpath="projects/processors/repo/grp/test-lib2/12.6"/>
         <package-artifact-from-dir jarbasename="test-lib3-12.6" relpath="projects/processors/repo/grp/test-lib3/12.6"/>
         <package-artifact-from-dir jarbasename="test-lib4-12.6" relpath="projects/processors/repo/grp/test-lib4/12.6"/>
         <package-artifact-from-dir jarbasename="test-processor-12.6" relpath="projects/processors/repo/grp/test-processor/12.6"/>

         <package-artifact-from-dir jarbasename="annotation-12.6" relpath="projects/dependencies/repo/grp/annotation/12.6"/>
         <package-artifact-from-dir jarbasename="test-lib-12.6" relpath="projects/dependencies/repo/grp/test-lib/12.6"/>
         <package-artifact-from-dir jarbasename="test-lib-13" relpath="projects/dependencies/repo/grp/test-lib/13"/>
         <package-artifact-from-dir jarbasename="test-lib3-12.6" relpath="projects/dependencies/repo/grp/test-lib3/12.6"/>
         <package-artifact-from-dir jarbasename="test-lib4-12.6" relpath="projects/dependencies/repo/grp/test-lib4/12.6"/>
         <package-artifact-from-dir jarbasename="test-processor-12.6" relpath="projects/dependencies/repo/grp/test-processor/12.6"/>

    </target>

</project>
