alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Ant example source code file (jar-spi-test.xml)

This example Ant source code file (jar-spi-test.xml) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Ant tags/keywords

utf-8, utf-8

The jar-spi-test.xml source code

<?xml version="1.0" encoding="utf-8"?>
<project xmlns:au="antlib:org.apache.ant.antunit">
  <property name="jar.dir" location="jar_spi_dir"/>
  <property name="jar.src.dir" location="jar_spi_dir/src"/>
  <property name="jar.src.file" location="jar_spi_dir/src/a_file"/>

  <target name="init">
    <mkdir dir="${jar.src.dir}"/>
    <delete quiet="yes" file="${jar.src.file}"/>
    <touch file="${jar.src.file}"/>
    <delete quiet="yes" file="${jar.dir}/file.jar"/>
    <delete quiet="yes" dir="${jar.dir}/output"/>
  </target>

  <target name="test-simple" depends="init">

    <jar jarfile="${jar.dir}/file.jar">
      <fileset dir="${jar.src.dir}"/>
      <service type="a.b.c" provider="a.b.c.d"/>
    </jar>

    <unjar src="${jar.dir}/file.jar"
           dest="${jar.dir}/output"/>

    <loadfile property="simple"
              srcfile="${jar.dir}/output/META-INF/service/a.b.c"
              encoding="UTF-8"/>

    <au:assertTrue>
      <matches string="${simple}" pattern="^a\.b\.c\.d$"/>
    </au:assertTrue>

  </target>

  <target name="test-providers" depends="init">

    <jar jarfile="${jar.dir}/file.jar">
      <fileset dir="${jar.src.dir}"/>
      <service type="a.b.c">
        <provider classname="a.X"/>
        <provider classname="a.D"/>
      </service>
    </jar>

    <unjar src="${jar.dir}/file.jar"
           dest="${jar.dir}/output"/>

    <loadfile property="providers"
              srcfile="${jar.dir}/output/META-INF/service/a.b.c"
              encoding="UTF-8"/>
    <au:assertTrue>
      <matches string="${providers}" pattern="^a\.X\na\.D$"/>
    </au:assertTrue>

  </target>

  <target name="test-multi" depends="init">

    <jar jarfile="${jar.dir}/file.jar">
      <fileset dir="${jar.src.dir}"/>
      <service type="a.b.c">
        <provider classname="a.X"/>
        <provider classname="a.D"/>
      </service>
      <service type="javax.a.service">
        <provider classname="a.O.T"/>
        <provider classname="a.B"/>
      </service>
    </jar>

    <unjar src="${jar.dir}/file.jar"
           dest="${jar.dir}/output"/>

    <loadfile property="multi-a"
              srcfile="${jar.dir}/output/META-INF/service/a.b.c"
              encoding="UTF-8"/>

    <au:assertTrue>
      <matches string="${multi-a}" pattern="^a\.X\na\.D$"/>
    </au:assertTrue>

    <loadfile property="multi-b"
              srcfile="${jar.dir}/output/META-INF/service/javax.a.service"
              encoding="UTF-8"/>

    <au:assertTrue>
      <matches string="${multi-b}" pattern="^a\.O\.T\na\.B$"/>
    </au:assertTrue>

  </target>

  <target name="test-reject-no-type" depends="init">
    <au:expectfailure>
      <jar jarfile="${jar.dir}/file.jar">
        <fileset dir="${jar.src.dir}"/>
        <service provider="a.X"/>
      </jar>
    </au:expectfailure>
  </target>

  <target name="test-reject-no-provider" depends="init">
    <au:expectfailure>
      <jar jarfile="${jar.dir}/file.jar">
        <fileset dir="${jar.src.dir}"/>
        <service type="a.X"/>
      </jar>
    </au:expectfailure>
  </target>

  <target name="test-reject-no-classname" depends="init">
    <au:expectfailure>
      <jar jarfile="${jar.dir}/file.jar">
        <fileset dir="${jar.src.dir}"/>
        <service type="a.X">
          <provider/>
        </service>
      </jar>
    </au:expectfailure>
  </target>

  <target name="tearDown">
    <delete quiet="yes" dir="${jar.dir}"/>
  </target>
</project>

Other Ant examples (source code examples)

Here is a short list of links related to this Ant jar-spi-test.xml source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.