SSd Trying to setup sandox

Dear community,

I download teh zip file of ssd-v7.0.2.zip from https://community.sailpoint.com/t5/Professional-Services/Services-Standard-Deployment-SSD-v7-0-2/ta-p/190497

then unzip, upload in lib the identityiq.jar and modified the below files:

  1. build.bat → add the locatioin of the ant
  • C:\MyAppps\apache-ant-1.9.16\bin\ant %*
  1. build.properites
  • See below::
IIQHome=c:/apps/tomcat/webapps/iiq
application.server.host=localhost
application.server.port=8080
application.server.start=C:/Apps/apache-tomcat-9.0.76/bin/startup.bat
application.server.stop=C:/Apps/apache-tomcat-9.0.76/bin/shutdown.bat
db.url=jdbc:mysql://localhost/identityiq?useServerPrepStmts=true&tinyInt1isBit=true&useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
db.userid=root
db.password=root
db.driver=com.mysql.jdbc.Driver
iiq.path=/iiq/login.jsf
# type must be db2,mysql,oracle,sqlserver
db.type=mysql
db.name=identityiq
# separate plugin db in 7.1+
plugin.db.name=identityiqPlugin
  1. serverName:
MyLaptopName=sandbox
  1. sandvox.iiq.properties
  • copy paste the iiq.properties of a running sailpoint
  1. sandbox.target.properties
%%TARGET%%=sandbox
%%ECLIPSE_USER%%=spadmin
%%ECLIPSE_PASS%%=admin
%%ECLIPSE_URL%%=http\://localhost\:8080/identityiq
debugPort=8000
debugTransport=dt_socket
#DB Type
%%DBTYPE%%=sqlserver
  1. run the command line:
 ant clean
Buildfile: C:\Apps\repos\my_local_iiq\ssd-v7.0.2_Test\build.xml

init-properties:
Trying to override old definition of task propertycopy
     [echo] hostname pulled from OS = MyLaptopName
     [echo] Looking for local properties file MyLaptopName.build.properties
     [echo] No local properties file for MyLaptopName.build.properties
     [echo] Looking for local properties file build.properties.MyLaptopName (legacy naming convention)
     [echo] No local properties file for build.properties.MyLaptopName
     [echo] No host-specific properties file for MyLaptopName.target.properties
     [echo] host = MyLaptopName
     [echo] No SPTARGET environment variable found
     [echo] target=sandbox
     [echo] Building for environment target sandbox
     [echo] Looking for a sandbox.build.properties file...
     [echo] Environment-specific properties file = sandbox.build.properties
     [echo] Checking for target 'sandbox' files to ignore...
     [echo] Found target ignore list file: 'sandbox.ignorefiles.properties', loading ignore list.
     [echo] buildSubset Property is not set to true. Will skip building subset...

clean:

BUILD SUCCESSFUL

do im missing anything here?

means my build goes well??

thanks in advance

Hi @fugitiva ,
Please run the below command
set SPTARGET=env (where “env” refers “dev” or “test” or “prod” or “sandbox”) so in your case it would be set SPTARGET=sandbox
run “build clean” to clean the previous “build” folder
run “build war” to generate the new “build” folder
Next to check if the SSB is build properly, navigate to build folder
Check if these three folders are created

classes – It contains the classes used in IIQ
extract – It contains all the IIQ files. Check the updated tokens by opening the desired files.
deploy – It contains deployable IIQ war file on application server

Please let me know if this works for you.
Thanks, Kavindar Sharma

Hi @kavindar_sharma thank you for your answer,
I did as you mention:

  1. set SPTARGET=sandbox
    image

  2. build clean

  3. build war

This is what i have in build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="services.standard.build" default="main">

    <import file="scripts/build.filelayout.xml"/>
    <import file="scripts/build.java.xml"/>
    <import file="scripts/build.config.xml"/>
    <import file="scripts/build.dev.xml"/>
    <import file="scripts/build.plugins.xml"/>
    <import file="scripts/build.connectors.xml"/>

    <!-- Compiler options -->

    <property name="compiler.debug" value="on"/>
    <property name="compiler.generate.no.warnings" value="off"/>
    <property name="compiler.args" value=""/>
    <property name="compiler.max.memory" value="128m"/>

    <patternset id="ignored.files">
        <exclude name="**/CVS/**"/>
        <exclude name="**/SCCS/**"/>
        <exclude name="**/RCS/**"/>
        <exclude name="**/rcs/**"/>
        <exclude name="**/.DS_Store/**"/>
        <exclude name="**/.svn/**"/>
        <exclude name="**/.pyc/**"/>
        <exclude name="**/.pyo/**"/>
        <exclude name="**/*.pyc/**"/>
        <exclude name="**/*.pyo/**"/>
        <exclude name="**/.git/**"/>
        <exclude name="**/*.hprof/**"/>
        <exclude name="**/_svn/**"/>
        <exclude name="**/.hg/**"/>
        <exclude name="**/*.lib/**"/>
        <exclude name="**/*~/**"/>
    </patternset>
    <patternset id="library.patterns">
        <include name="*.zip"/>
        <include name="*.war"/>
        <include name="*.egg"/>
        <include name="*.ear"/>
        <include name="*.swc"/>
        <include name="*.jar"/>
    </patternset>
    <patternset id="compiler.resources">
        <include name="**/?*.properties"/>
        <include name="**/?*.xml"/>
        <include name="**/?*.gif"/>
        <include name="**/?*.png"/>
        <include name="**/?*.jpeg"/>
        <include name="**/?*.jpg"/>
        <include name="**/?*.html"/>
        <include name="**/?*.dtd"/>
        <include name="**/?*.tld"/>
        <include name="**/?*.ftl"/>
    </patternset>

    <!-- JDK definitions -->

    <property name="jdk.bin.1.6" value="${jdk.home.1.6}/bin"/>
    <path id="jdk.classpath.1.6">
        <fileset dir="${jdk.home.1.6}">
            <include name="jre/lib/alt-rt.jar"/>
            <include name="jre/lib/alt-string.jar"/>
            <include name="jre/lib/charsets.jar"/>
            <include name="jre/lib/deploy.jar"/>
            <include name="jre/lib/javaws.jar"/>
            <include name="jre/lib/jce.jar"/>
            <include name="jre/lib/jsse.jar"/>
            <include name="jre/lib/management-agent.jar"/>
            <include name="jre/lib/plugin.jar"/>
            <include name="jre/lib/resources.jar"/>
            <include name="jre/lib/rt.jar"/>
            <include name="jre/lib/ext/dnsns.jar"/>
            <include name="jre/lib/ext/localedata.jar"/>
            <include name="jre/lib/ext/sunjce_provider.jar"/>
            <include name="jre/lib/ext/sunmscapi.jar"/>
            <include name="jre/lib/ext/sunpkcs11.jar"/>
        </fileset>
    </path>

    <!-- ********************************************************* -->
    <!-- Global properties                                         -->
    <!-- ********************************************************* -->

    <taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="lib/ant-contrib-1.0b3.jar"/>
        </classpath>
    </taskdef>

    <taskdef name="build-init" classname="sailpoint.services.tools.ant.BuildInitTask">
        <classpath>
            <pathelement location="lib/services-tools.jar"/>
        </classpath>
    </taskdef>

    <typedef name="gt" classname="sailpoint.services.tools.ant.ConditionGreaterThan">
        <classpath>
            <pathelement location="lib/services-tools.jar"/>
        </classpath>
    </typedef>

    <taskdef name="grep" classname="ise.antelope.tasks.Find">
        <classpath>
            <pathelement location="lib/AntelopeTasks_3.5.3.jar"/>
        </classpath>
    </taskdef>

    <taskdef name="unset" classname="ise.antelope.tasks.Unset">
        <classpath>
            <pathelement location="lib/AntelopeTasks_3.5.3.jar"/>
        </classpath>
    </taskdef>

    <taskdef name="orderedFileListing" classname="sailpoint.services.tools.ant.OrderedFileListing">
        <classpath>
            <fileset dir="lib">
                <include name="services-tools.jar"/>

            </fileset>
        </classpath>
    </taskdef>


    <!-- ********************************************************* -->
    <!-- Global properties                                         -->
    <!-- ********************************************************* -->
    <!-- Eclipse -->
    <property name="build" location="build"/>
    <property name="build.iiqBinaryExtract" location="${build}/extract"/>
    <property name="build.iiqBinaryExtractDelta" location="${build}/subset"/>

    <target name="init-properties">
        <!-- Allows you to essentially dereference a property -->
        <macrodef name="propertycopy">
            <attribute name="name"/>
            <attribute name="from"/>
            <sequential>
                <property name="@{name}" value="${@{from}}"/>
            </sequential>
        </macrodef>

        <!-- The build.properties is loaded further below, after the host
             name is derived.  This allows per-hostname over-ride of the
             build.properties file.
        <property file="build.properties"/>
         -->

        <!-- list of servers and associated build environments -->
        <property file="servers.properties"/>
        <property environment="env"/>

        <!-- get hostname or computername, depending upon OS -->
        <condition property="hostname" value="${env.HOSTNAME}">
            <os family="unix"/>
        </condition>
        <condition property="hostname" value="${env.COMPUTERNAME}">
            <os family="windows"/>
        </condition>
        <condition property="hostname" value="${env.HOSTNAME}">
            <os family="mac"/>
        </condition>
        <echo>hostname pulled from OS = ${hostname}</echo>

        <!-- look for _hostname_.build.properties ... if found it overrides build.properties-->
        <echo message="Looking for local properties file ${hostname}.build.properties"/>
        <if>
            <available file="${hostname}.build.properties"/>
            <then>
                <property file="${hostname}.build.properties"/>
                <echo message="local properties file = ${hostname}.build.properties"/>
            </then>
            <else>
                <echo>No local properties file for ${hostname}.build.properties</echo>
                <echo message="Looking for local properties file build.properties.${hostname} (legacy naming convention)"/>
                <if>
                    <available file="build.properties.${hostname}"/>
                    <then>
                        <echo>
                            build.properties.${hostname} is now a deprecated naming convention.
                            Recommendation is to use ${hostname}.build.properties instead.
                        </echo>
                        <sleep seconds="5"/>
                        <property file="build.properties.${hostname}"/>
                        <echo message="local properties file = build.properties.${hostname}"/>
                    </then>
                    <else>
                        <echo>No local properties file for build.properties.${hostname}</echo>
                    </else>
                </if>
            </else>
        </if>

        <!-- Look for a _hostname_.target.properties file, if found it overrides BUILDTYPE.target.properties -->
        <if>
            <available file="${hostname}.target.properties"/>
            <then>
                <property file="${hostname}.target.properties"/>
                <echo message="Found host-specific properties file = ${hostname}.target.properties"/>
            </then>
            <else>
                <echo>No host-specific properties file for ${hostname}.target.properties</echo>
            </else>
        </if>

        <!--information regarding host and discovered target -->
        <echo message="host = ${hostname}"/>

        <!-- Allow the end user to override the target we are building for by
             defining an SPTARGET environment variable. -->
        <if>
            <isset property="env.SPTARGET"/>
            <then>
                <propertycopy name="target" from="env.SPTARGET"/>
                <echo message="Found SPTARGET environment variable of ${target}, building for that environment."/>
            </then>
            <else>
                <propertycopy name="target" from="${hostname}"/>
                <echo>No SPTARGET environment variable found</echo>
            </else>
        </if>
        <echo message="target=${target}"/>

        <fail message="Unable to load target properties.  Please ensure your host is set to a build target in servers.properties or that SPTARGET is set to a valid environment name.">
            <condition>
                <not>
                    <available file="${target}.target.properties"/>
                </not>
            </condition>
        </fail>

        <!-- override of os level environment attribute, often useful in dev environments-->
        <!--<property name="target" value="sandbox"/>-->
        <echo>Building for environment target ${target}</echo>
        <if>
            <!-- Test for the target property files before continuing -->
            <not>
                <and>
                    <available file="${target}.iiq.properties"/>
                    <available file="${target}.target.properties"/>
                </and>
            </not>
            <then>
                <fail message="Error: ${line.separator}
                Can't find '${target}.iiq.properties' and '${target}.target.properties' ${line.separator}
                You must define these files in the root of the build folder to build for this environment"/>
            </then>
        </if>

        <!-- Look for a _target_.build.properties file, if found it overrides build.properties. -->
        <echo>Looking for a ${target}.build.properties file...</echo>
        <if>
            <available file="${target}.build.properties"/>
            <then>
                <property file="${target}.build.properties"/>
                <echo message="Environment-specific properties file = ${target}.build.properties"/>
            </then>
            <else>
                <echo>Did not find a ${target}.build.properties file</echo>
                <echo>Looking for a build.properties.${target} file instead</echo>
                <if>
                    <available file="build.properties.${target}"/>
                    <then>
                        <echo>
                            build.properties.${target} is deprecated naming convention.
                            Recommendation is to use ${target}.build.properties for new work.
                        </echo>
                        <sleep seconds="5"/>
                        <property file="build.properties.${target}"/>
                        <echo message="Environment-specific properties file = build.properties.${target}"/>
                    </then>
                </if>
            </else>
        </if>

        <property file="build.properties"/>

        <!-- look for environment specific files to ignore during the build. -->
        <echo message="Checking for target '${target}' files to ignore..."/>
        <if>
            <available file="${target}.ignorefiles.properties"/>
            <then>
                <echo message="Found target ignore list file: '${target}.ignorefiles.properties', loading ignore list."/>
                <property name="ignoreFiles" value=""/>
                <property name="ignorefiles.is.found" value="true"/>
                <loadfile property="ignoreListFile" srcfile="${target}.ignorefiles.properties"/>
                <!-- Note: we just document on the console the file contents here.
                     The actual redaction/removal of these files is done in the
                     build out of the init-custom.xml in the build.config.xml file. -->
                <for param="ignoreListFileLine">
                    <tokens>
                        <file file="${target}.ignorefiles.properties"/>
                    </tokens>
                    <sequential>
                        <var name="ignoreListFileLine.length" unset="true"/>
                        <length string="@{ignoreListFileLine}" property="ignoreListFileLine.length"/>
                        <if>
                            <or>
                                <!-- Assume the lines don't start with a comment. -->
                                <matches pattern="\s*\#.*$" string="@{ignoreListFileLine}"/>
                                <equals arg1="${ignoreListFileLine.length}" arg2="0"/>
                            </or>
                            <then>
                                <!-- the line is blank or a comment, skip it. -->
                                <!-- <echo></echo> -->
                            </then>
                            <else>
                                <echo>Will skip import for: @{ignoreListFileLine}</echo>
                            </else>
                        </if>
                    </sequential>
                </for>
            </then>
            <else>
                <echo message="No target ignore list file: '${target}.ignorefiles.properties', importing all XML objects."/>
            </else>
        </if>

        <!-- check if buildSubset property is true. If true, build a zip file with files from icludefiles.properties only-->
        <if>
            <equals arg1="${buildSubset}" arg2="true"/>
            <then>
                <!-- look for environment specific files to include during the subset build. -->
                <echo message="Checking for target '${target}' files to include for the subset build..."/>
                <if>
                    <available file="${target}.includefiles.properties"/>
                    <then>
                        <echo message="Found target include list file: '${target}.includefiles.properties', loading include list."/>
                        <property name="includeFiles" value=""/>
                        <property name="includefiles.is.found" value="true"/>
                        <loadfile property="includeListFile" srcfile="${target}.includefiles.properties"/>

                        <for param="includeListFileLine">
                            <tokens>
                                <file file="${target}.includefiles.properties"/>
                            </tokens>
                            <sequential>
                                <var name="includeListFileLine.length" unset="true"/>
                                <length string="@{includeListFileLine}" property="includeListFileLine.length"/>
                                <if>
                                    <or>
                                        <!-- Assume the lines don't start with a comment. -->
                                        <matches pattern="\s*\#.*$" string="@{includeListFileLine}"/>
                                        <equals arg1="${includeListFileLine.length}" arg2="0"/>
                                    </or>
                                    <then>
                                        <!-- the line is blank or a comment, skip it. -->
                                        <!-- <echo></echo> -->
                                    </then>
                                    <else>
                                        <echo>Will include: @{includeListFileLine} in the subset build</echo>
                                    </else>
                                </if>
                            </sequential>
                        </for>
                    </then>
                    <else>
                        <echo message="No target include list file: '${target}.includefiles.properties'. Will skip building subset ...."/>
                    </else>
                </if>
            </then>
            <else>
                <echo message="buildSubset Property is not set to true. Will skip building subset..."/>
            </else>
        </if>
        <!-- common directories -->
        <property name="build" location="build"/>
        <property name="build.iiqBinaryExtract" location="${build}/extract"/>
        <property name="build.iiqSubsetExtract" location="${build}/subset"/>
        <property name="build.customXMLDir" location="${build.iiqBinaryExtract}/WEB-INF/config/custom"/>
        <property name="build.subsetXMLDir" location="${build.iiqSubsetExtract}/WEB-INF/config/custom"/>
        <property name="build.web-inf.lib" location="${build.iiqBinaryExtract}/WEB-INF/lib"/>
        <property name="build.web-inf.classes" location="${build.iiqBinaryExtract}/WEB-INF/classes"/>
        <property name="pluginSrc" location="pluginsrc"/>
        <property name="connectorSrc" location="connectorsrc"/>
        <property name="dependency-check.home" value="./dependency-check-ant"/>
        <property name="dependency-check.reports" value="${build}/dependency-check-reports"/>

        <!-- common files -->
        <property name="dtd" location="${build.iiqBinaryExtract}/sailpoint.${IIQVersion}${IIQPatchLevel}.dtd"/>

        <tstamp>
            <format property="build.zipstamp" pattern="yyyyMMdd-HHmm"/>
        </tstamp>

        <path id="dependency-check.path">
            <pathelement location="${dependency-check.home}/dependency-check-ant.jar"/>
        </path>
        <taskdef resource="dependency-check-taskdefs.properties">
            <classpath refid="dependency-check.path"/>
        </taskdef>

    </target>


    <!-- ********************************************************* -->
    <!-- Main                                                      -->
    <!--    expands ga bin and applies customizations              -->
    <!-- ********************************************************* -->

    <target name="main"
            depends="init-properties" description="makes complete iiq distribution directory">
        <!-- laydown initial binaries and custom static web content -->
        <antcall inheritall="true" target="prepBinaries"/>
      
        <!-- Check whether the IIQ version is earlier than a given version
        number so that we can exclude certain components from compilation
        if they are not compatible with earlier versions -->
        <!-- <script language="javascript">
            <![CDATA[
             var version = parseFloat(project.getProperty('IIQVersion'));
             project.setProperty('pre6.2', version < 6.2 ? "true" : "false");
             project.setProperty('pre6.3', version < 6.3 ? "true" : "false");
             project.setProperty('pre6.4', version < 6.4 ? "true" : "false"); 
             project.setProperty('pre7.0', version < 7.0 ? "true" : "false");
             project.setProperty('pre7.1', version < 7.1 ? "true" : "false");
             project.setProperty('pre7.2', version < 7.2 ? "true" : "false");
             project.setProperty('pre8.0', version < 8.0 ? "true" : "false");
           ]]>
        </script>
        -->
        <script language="beanshell" setbeans="true">
          <classpath>
            <fileset dir="lib" includes="*.jar"/>
            <fileset dir="build/extract/WEB-INF/lib" includes="*.jar"/>
          </classpath>
          <![CDATA[
            String versionString = project.getProperty("IIQVersion");
            Float version = Float.valueOf(versionString);
            project.setProperty("pre6.2", version < 6.2 ? "true" : "false");
            project.setProperty("pre6.3", version < 6.3 ? "true" : "false");
            project.setProperty("pre6.4", version < 6.4 ? "true" : "false"); 
            project.setProperty("pre7.0", version < 7.0 ? "true" : "false");
            project.setProperty("pre7.1", version < 7.1 ? "true" : "false");
            project.setProperty("pre7.2", version < 7.2 ? "true" : "false");
            project.setProperty("pre8.0", version < 8.0 ? "true" : "false");
          ]]>
        </script>
        <!-- laydown initial binaries and custom static web content -->
        <antcall inheritall="true" target="prepBinaries"/>

        <!-- delete outdated MySQL, Oracle and MSSQL JDBC drivers -->
        <delete file="${build.web-inf.lib}/mysql-connector-java-5.1.13-bin.jar"/>
        <delete file="${build.web-inf.lib}/ojdbc14.jar"/>
        <delete file="${build.web-inf.lib}/sqljdbc-1.2.jar"/>
        <!-- 
            when you drop a new JDBC driver jar into WEB-INF/lib in the SSB project folder,
            you need to make sure you delete the out-of-the-box JDBC driver in the same namespace. 
            here's an example of deleting the old default 4.0 SQL Server JDBC driver if you add in the 
            4.2 JDBC driver for the same. the new jar is called sqljdbc42.jar, but you need to clean up
            the old jar, as they share the same namepace within.
            <delete file="${build.web-inf.lib}/sqljdbc4.jar"/>
        -->

        <!-- Build and deploy any plugins in the plugin source folder -->
        <if>
            <and>
                <not>
                    <equals arg1="${pre7.1}" arg2="true"/>
                </not>
                <available file="${pluginSrc}" type="dir"/>
            </and>
            <then>
                <antcall inheritall="true" target="buildPlugins"/>
            </then>
        </if>


        <!-- search for custom tasks to perform on the files that will be included in the web application folder -->
        <if>
            <equals arg1="${runCustomScripts}" arg2="true"/>
            <then>
                <subant target="post.expansion.hook" inheritall="true">
                    <fileset dir="." includes="scripts/build.custom.*.xml"/>
                </subant>
            </then>
        </if>

        <!-- fix for color palette in SSD Email Template Editor -->
        <if>
            <and>
                <available file="scripts/build.templateeditor.fixcolors.xml"/>
                <equals arg1="${deployEmailTemplateEditor}" arg2="true"/>
            </and>
            <then>
                <subant target="templateeditor.fixcolors" inheritall="true" failonerror="false">
                    <fileset dir="." includes="scripts/build.templateeditor.fixcolors.xml"/>
                </subant>
            </then>
        </if>

        <!-- compile custom java artifacts -->
        <antcall inheritall="true" target="compile"/>

        <antcall inheritall="true" target="-generateDTD"/>
      
        <if>
            <equals arg1="${includeCustomJar}" arg2="true"/>
            <then>
              <antcall inheritall="true" target="includeCustomJar"/>
            </then>
        </if>

        <!-- compile custom configuration, apply env tokens and setup init files-->
        <antcall inheritall="true" target="prepareCustomConfig"/>
        <if>
            <equals arg1="${updateLog4jLoggers}" arg2="true"/>
            <then>
                <antcall inheritall="true" target="log4jPropsUpdate"/>
            </then>
        </if>

        <!-- Build and deploy any connectors in the connectors source folder -->
        <if>
            <and>
                <equals arg1="${buildConnectors}" arg2="true"/>
                <not>
                    <equals arg1="${pre7.1}" arg2="true"/>
                </not>
                <available file="${connectorSrc}" type="dir"/>
            </and>
            <then>
                <antcall inheritall="true" target="buildConnectors"/>
            </then>
        </if>
        
        <antcall target="cleanUpFromFailure"/>

        <antcall inheritall="true" target="-createVersionPage"/>

    </target>

    <!-- ********************************************************* -->
    <!-- War                                                       -->
    <!--    makes war file and applies customizations              -->
    <!-- ********************************************************* -->

    <target name="war" depends="main"
            description="Makes war file from main target results and applies custom post war custom scripts">
        <!-- package a war file for deployment -->
        <war destfile="build/deploy/identityiq.war">
            <fileset dir="${build.iiqBinaryExtract}"/>
        </war>
        <if>
            <equals arg1="${runCustomScripts}" arg2="true"/>
            <then>
                <subant target="post.war.hook" inheritall="true" failonerror="false">
                    <fileset dir="." includes="scripts/build.custom.*.xml"/>
                </subant>
            </then>
        </if>
        <checksum file="build/deploy/identityiq.war" forceOverwrite="yes"/>
        <echo>A MD5 checksum was generated for this war file and placed in the war file directory. Keep this checksum to
            diagnose potential version issues
        </echo>

        <if>
            <and>
                <equals arg1="${buildSubset}" arg2="true"/>
                <available file="${build.iiqSubsetExtract}" type="dir"/>
            </and>
            <then>
                <!-- package a zip file for subset deployment -->
                <zip destfile="build/deploy/identityiqSubset.zip">
                    <fileset dir="${build.iiqSubsetExtract}"/>
                </zip>
                <echo>Generated zip file for subset deployment of includefiles</echo>
            </then>
            <else>
                <echo>Zip file for subset deployment(includefiles) will not be generated.</echo>
            </else>
        </if>
    </target>

    <!--                                                            -->
    <!-- Target: deploy                                             -->
    <!-- Move files over to the IdentityIQ side and import          -->
    <!--                                                            -->
    <target name="deploy" depends="war">
        <echo message="Deploying build local IIQ instance: ${IIQHome}."/>
        <unzip src="build/deploy/identityiq.war" dest="${IIQHome}" overwrite="true"/>
        <property name="build.deployed" value="true"/>
        <antcall target="import-custom"/>
    </target>

    <!--                                                            -->
    <!-- Target: install                                             -->
    <!-- Move files over to the IdentityIQ side                     -->
    <!--                                                            -->
    <target name="install" depends="war">
        <echo message="Deploying build local IIQ instance: ${IIQHome}."/>
        <unzip src="build/deploy/identityiq.war" dest="${IIQHome}" overwrite="true"/>
        <property name="build.deployed" value="true"/>
    </target>

    <!-- ********************************************************* -->
    <!-- Target: extractAPFiles                                    -->
    <!-- Expands contents of accelerator pack *.hbm.xml and        -->
    <!-- iiqCustom.properties within the SSB                       -->
    <!-- Format of AP zip file name has changed twice so need to   -->
    <!-- check for each naming format.                             -->
    <!-- ********************************************************* -->

    <target name="extractAPfiles" depends="init-properties" description="Extracts contents of accelerator pack hbm.xml files into SSB">
        <if>
            <available file="base/ap/Accelerator_Pack-${IIQVersion}-${acceleratorPackVersion}.zip"/>
            <then>
                <property name="acceleratorPackZipName" value="Accelerator_Pack-${IIQVersion}-${acceleratorPackVersion}.zip"/>
            </then>
        </if>
        <if>
            <available file="base/ap/Accelerator_Pack_${IIQVersion}-${acceleratorPackVersion}.zip"/>
            <then>
                <property name="acceleratorPackZipName" value="Accelerator_Pack_${IIQVersion}-${acceleratorPackVersion}.zip"/>
            </then>
        </if>
        <if>
            <available file="base/ap/Accelerator_Pack-${acceleratorPackVersion}.zip"/>
            <then>
                <property name="acceleratorPackZipName" value="Accelerator_Pack-${acceleratorPackVersion}.zip"/>
            </then>
        </if>

        <if>
            <or>
                <equals arg1="${acceleratorPackZipName}" arg2=""/>
                <not>
                    <isset property="acceleratorPackZipName"/>
                </not>
            </or>
            <then>
                <property name="critical.failure"
                          value="Could not find Accelerator Pack binaries for the specified Accelerator Pack version ${acceleratorPackVersion} and IdentityIQ version ${IIQVersion} in the /base/ap directory.
                          You can download these files from https://community.sailpoint.com "/>
                <fail message="${critical.failure}"/>
            </then>
        </if>


        <trycatch property="critical.failure">
            <try>
                <echo>Overlaying Object Properties XML files onto SSB</echo>
                <unzip dest="ap-merge" src="base/ap/${acceleratorPackZipName}">
                    <cutdirsmapper dirs="5"/>
                    <patternset>
                        <include name="web/WEB-INF/classes/sailpoint/object/*.hbm.xml"/>
                    </patternset>
                </unzip>

                <unzip dest="ap-merge" src="base/ap/${acceleratorPackZipName}">
                    <cutdirsmapper dirs="6"/>
                    <patternset>
                        <include name="web/WEB-INF/classes/sailpoint/web/messages/iiqCustom.properties"/>
                    </patternset>
                </unzip>
            </try>
            <catch>
                <echo>Critical failure while extracting Accelerator Pack zip file.
                </echo>
                <fail message="${critical.failure}"/>
            </catch>
        </trycatch>
    </target>
    <!--                                                                                 -->
    <!-- Target: log4jPropsUpdate                                                        -->
    <!-- Updates log4j.properties with any loggers that appear in files in custom folder -->
    <!-- or source code under the src folder.                                            -->
    <!--                                                                                 -->
    <target name="log4jPropsUpdate">
        <echo message="Generating custom log4j properties file..."/>
        <if>
            <not>
                <equals arg1="${pre8.0}" arg2="true"/>
            </not>
            <then>
                <property name="log4jdestination" value="${build.web-inf.classes}/log4j2.properties"/>
                <property name="log4jbackup" value="${build.web-inf.classes}/log4j2.properties.orig"/>
                <property name="log4jtmp" value="${build.web-inf.classes}/log4j2.properties.log4jupdate_tmp"/>
            </then>
            <else>
                <property name="log4jdestination" value="${build.web-inf.classes}/log4j.properties"/>
                <property name="log4jbackup" value="${build.web-inf.classes}/log4j.properties.orig"/>
                <property name="log4jtmp" value="${build.web-inf.classes}/log4j.properties.log4jupdate_tmp"/>
            </else>
        </if> 
        
        <if>
            <!-- Test for the log4j file before continuing -->
            <not>
                <and>
                    <available file="${log4jdestination}"/>
                </and>
            </not>
            <then>
                <fail message="Error: Can't find '${log4jdestination}', something went wrong... ${line.separator}"/>
            </then>
        </if>
        <!-- File must be copied every time, due to the fact main 
        task is not overwriting it every time and we are concatenating 
        log config on every build -->
        
        <if>
            <not>
                <and>
                    <available file="${log4jbackup}"/>
                </and>
            </not>
            <then>
                <copy file="${log4jdestination}"  tofile="${log4jbackup}" overwrite="true"/>
            </then>
            <else>
                 <copy file="${log4jbackup}"  tofile="${log4jdestination}" overwrite="true"/>
            </else>
        </if>

        <echo file="${log4jdestination}" append="true">
# ===================================================================
# The lines below have been dynamically added via the build script
# ===================================================================
        </echo> 
 
        <if>
            <not>
                <equals arg1="${pre8.0}" arg2="true"/>
            </not>
            <then>    
                <!-- Log4j2 format for IdentityIQ 8.0+ -->
                <concat destfile="${log4jtmp}" append="true">
                    <fileset dir="${build.customXMLDir}/">
                        <filename name="**/*.xml"/>
                    </fileset>
                    <filterchain>
                        <linecontainsregexp>
                            <regexp pattern=".*=.*(Logger.getLogger|LogFactory.getLog)"/>
                        </linecontainsregexp>
                        <deletecharacters chars="\t"/>
                        <deletecharacters chars=" "/>
                                <tokenfilter>
                                    <replaceregex pattern=".*=.*(Logger.getLogger|LogFactory.getLog)\s*\(\s*&quot;" replace=""/>
                                    <replaceregex pattern="&quot;\s*\)\s*;" replace=""/>

                                    <replaceregex pattern="(.*)" replace="\1.name=\1${line.separator}\1.level=trace"/>
                                    <replaceregex pattern="(\.)(?=(.*\.name=.*))" replace="" flags="g"/>
                                    <replaceregex pattern="(\.)(?=(.*\.level=.*))" replace="" flags="g"/>
                                </tokenfilter>
                                <prefixlines prefix="#logger."/>
                    </filterchain>       
                </concat> 
            </then>
            <else>
                <!-- Log4j format for older versions -->
                <concat destfile="${log4jtmp}" append="true">
                    <fileset dir="${build.customXMLDir}/">
                        <filename name="**/*.xml"/>
                    </fileset>
                    <filterchain>
                        <linecontainsregexp>
                            <regexp pattern=".*=.*(Logger.getLogger|LogFactory.getLog)"/>
                        </linecontainsregexp>
                        <deletecharacters chars="\t"/>
                        <deletecharacters chars=" "/>
                        <tokenfilter>
                            <replaceregex pattern=".*=.*(Logger.getLogger|LogFactory.getLog)\s*\(\s*&quot;" replace=""/>
                            <replaceregex pattern="&quot;\s*\)\s*;" replace="=trace"/>
                        </tokenfilter>
                        <prefixlines prefix="#log4j.logger."/>
                    </filterchain>       
                </concat> 
            </else>
        </if>
 
        <if>
            <available file="${log4jtmp}"/>
            <then>
                <loadfile property="loggerEntries" srcFile="${log4jtmp}"/>

                <for list="${loggerEntries}" param="logLine" delimiter="${line.separator}">

                    <sequential>    
                        <!-- Remove stray new line chars before comparison -->
                        <var name="cleanLogLine" unset="true"/> 
                        <propertyregex property="cleanLogLine"
                              input="@{logLine}"
                              regexp="[\r\n]+"
                              replace=""
                              defaultValue="@{logLine}"
                              casesensitive="false" />
                        <if>
                            <not>
                                <resourcecontains resource="${log4jdestination}" substring="${cleanLogLine}"/>
                            </not>
                            <then>
                                <var name="thisLogLine" unset="true"/> 
                                <propertyregex property="thisLogLine"
                                      input="${cleanLogLine}"
                                      regexp="level=trace"
                                      replace="level=trace${line.separator}"
                                      defaultValue="${cleanLogLine}"
                                      casesensitive="false" />
                                <echo file="${log4jdestination}" append="true">${line.separator}${thisLogLine}</echo>
                            </then>  
                        </if> 
                        
                    </sequential>
                </for>
               <delete file="${log4jtmp}"/>
            </then>
        </if>
        <property name="srcDir" location="src"/>
        <for param="file">
          <path>
            <fileset dir="src">
                <filename name="**/*.java"/>
            </fileset>
          </path>
         
          <sequential>
            <var name="rawClassName"  unset="true"/>
            <var name="className"  unset="true"/>
            <var name="relativePth"  unset="true"/>
            <var name="loggerName"  unset="true"/>
            <pathconvert property="relativePth">
                <file file="@{file}" />
                    <!-- pathconvert strips off the leading ${basedir}/js -->
                <map from="${srcDir}" to="" />
            </pathconvert>
            <propertyregex property="rawClassName"
                      input="${relativePth}"
                      regexp="[\\\/]*(.*)\.java"
                      select="\1"
                      casesensitive="false" />        
            <propertyregex property="className"
                      input="${rawClassName}"
                      regexp="[\\\/]"
                      replace="."
                      casesensitive="false" />
            <propertyregex property="loggerName"
                      input="${className}"
                      regexp="\."
                      replace=""
                      global="true"
                      casesensitive="false" />

            <if>
                <not>
                    <equals arg1="${pre8.0}" arg2="true"/>
                </not>
                <then>
                    <echo file="${log4jdestination}" append="true">${line.separator}#logger.${loggerName}.name=${className}${line.separator}#logger.${loggerName}.level=trace${line.separator}</echo>
                </then>
                <else>
                    <echo file="${log4jdestination}" append="true">${line.separator}#log4j.logger.${className}=trace</echo>
                </else>
            </if>
          </sequential>
        </for>
    </target>

    <!-- ********************************************************* -->
    <!-- CleanUpFromFailure                                        -->
    <!--    Catch all clean up task for detected failures.
            Any target that can leave the build in a bad state on error should
            set the "critical.failure" property with an appropriate error
            message and clean up its artifacts.                   -->
    <!-- ********************************************************* -->
    <!-- -->
    <target name="cleanUpFromFailure" if="critical.failure">
        <antcall target="clean"/>
        <fail message="${critical.failure}"/>
    </target>

    <target name="clean" depends="init-properties">
        <!-- search for custom clean tasks -->
        <if>
            <equals arg1="${runCustomScripts}" arg2="true"/>
            <then>
                <subant target="clean" inheritall="true">
                    <fileset dir="." includes="scripts/build.custom.*.xml"/>
                </subant>
            </then>
        </if>
        <delete dir="build" deleteonexit="true"/>
    </target>

    <!-- clean up web dir, with safety prompts -->
    <target name="cleanWeb"
            description="deletes web directory as specified by variable IIQHome. you may need to stop the web server before using this target."
            depends="init-properties">
        <if>
            <equals arg1="${override.safety.prompts}" arg2="false"/>
            <then>
                <input
                        message="Are you sure you want to delete the web app directory [ ${IIQHome} ]?   continue (y/n)?"
                        validargs="y,n"
                        addproperty="do.delete"
                />
                <condition property="do.abort">
                    <equals arg1="n" arg2="${do.delete}"/>
                </condition>
                <fail if="do.abort">cleanWeb target aborted by user.</fail>
            </then>
        </if>
        <echo>Deleting ${IIQHome}</echo>
        <delete dir="${IIQHome}" deleteonexit="true"/>
        <echo>Done!</echo>
    </target>

    <!-- Ant task to build a time-stamped deployment zip file.  This   -->
    <!-- helps automate the procedure of deploying to Dev, Test, Prod. -->
    <!-- Files get named this: PROJNAME-customizations-20110217-1053.zip  -->
    <target name="zipfile" depends="init-properties">
        <delete file="${ant.project.name}-customizations.zip"/>
        <delete file="${ant.project.name}-customizations-*.zip"/>
        <echo message="Building zipfile named ${ant.project.name}-customizations-${build.zipstamp}.zip ..."/>
        <zip destfile="${ant.project.name}-customizations-${build.zipstamp}.zip"
             excludes="**/CVS/**,**/SCCS/**,**/SCCS/**,**/rcs/**,**/.DS_Store/**,**/.svn/**,**/*.pyc/**,**/.pyo/**,**/.git/**,**/*.hprof/**,**/_svn/**,**/.hg/**">
            <!-- excludes skips files in sub-directories that are managed by version control systems. -->
            <!-- explicitly include certain directories of the build tree: -->
            <fileset dir="." includes="build.*"/>
            <fileset dir="." includes="*.properties"/>
            <fileset dir="." includes="target*common"/>
            <fileset dir="." includes="StandardServices*.*"/>
            <fileset dir="." includes="ServicesStd*.*"/>
            <zipfileset dir="base/" prefix="base/"/>
            <zipfileset dir="config/" prefix="config/"/>
            <zipfileset dir="db/" prefix="db/"/>
            <zipfileset dir="lib/" prefix="lib/"/>
            <zipfileset dir="scripts/" prefix="scripts/"/>
            <zipfileset dir="src/" prefix="src/"/>
            <zipfileset dir="web/" prefix="web/"/>
        </zip>
    </target>

    <!-- 
    example target for performing initial build
     -->
    <target name="initial-build"
            description="can perform a repeatable, initial build of IIQ. requires planning for proper execution. see SSB guide for details.">
        <echo>Doing intial build</echo>

        <antcall target="clean"/>
        <antcall target="cleanWeb"/>
        <antcall target="main"/>
        <antcall target="createdb"/>
        <antcall target="extenddb"/>
        <antcall target="import-stock"/>
        <antcall target="import-lcm"/>
        <antcall target="patchdb"/>
        <antcall target="runUpgrade"/>
        <antcall target="import-custom"/>
        <antcall target="dist"/>

        <echo>Done with intial build</echo>
    </target>

    <target name="dependency-check" depends="main" description="Dependency-Check Analysis">
        <dependency-check projectname="IdentityIQ"
                          reportoutputdirectory="${dependency-check.reports}"
                          reportformat="ALL">
            <suppressionfile path="${dependency-check.home}/suppressions.xml"/>
            <fileset dir="${build.iiqBinaryExtract}/WEB-INF/lib">
                <include name="**/*.jar"/>
                <exclude name="**/*ojdbc*"/>
            </fileset>
            <fileset dir="${build.iiqBinaryExtract}/WEB-INF/lib-connectors" erroronmissingdir="false">
                <include name="**/*.jar"/>
              <exclude name="**/*ojdbc*"/>
            </fileset>
        </dependency-check>
    </target>
</project>

in the build.fileout.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="services.standard.build.filelayout">

    <target name="prepBinaries"
            depends="-expandGAreleaseAndPatches,-expandAP,-laydownWebDirectoryOverrides"/>

    <target name="-expandGAreleaseAndPatches">
        <if>
            <not>
                <available file="base/ga/identityiq-${IIQVersion}.zip"/>
            </not>
            <then>
                <property name="critical.failure"
                          value="Could not find file (identityiq-${IIQVersion}.zip}) IIQ GA binaries for the specified build version ${IIQVersion} in the /base/ga directory. You can download these files from https://community.sailpoint.com "/>
                <fail message="${critical.failure}"/>
            </then>
        </if>
        <if>
            <and>
                <and>
                    <isset property="IIQPatchLevel"/>
                    <length string="${IIQPatchLevel}" when="greater" length="1"/>
                </and>
                <not>
                    <available file="base/patch/identityiq-${IIQVersion}${IIQPatchLevel}.jar"/>
                </not>
            </and>

            <then>
                <property name="critical.failure"
                          value="Could not find file (identityiq-${IIQVersion}${IIQPatchLevel}.jar}) IIQ patch binaries for the specified build version ${IIQVersion}${IIQPatchLevel} in the /base/patch directory.  You can download these files from https://community.sailpoint.com "/>
                <fail message="${critical.failure}"/>
            </then>

            <else>
                <echo>Found IIQ binaries for ${IIQVersion}${IIQPatchLevel}. Building for this version.</echo>
            </else>
        </if>

        <!-- Automatically build the base/efix/N.XpY directory.  The build should be smart enough
            to do this own its own and not require that a user create a new directory by hand. -->
        <if>
            <available file="base/efix/${IIQVersion}${IIQPatchLevel}" type="dir"/>
            <then>
                <echo>Will look for eFixes in directory: base/efix/${IIQVersion}${IIQPatchLevel} ...</echo>
            </then>
            <else>
                <echo>Creating directory for future eFixes: base/efix/${IIQVersion}${IIQPatchLevel} ...</echo>
                <mkdir dir="base/efix/${IIQVersion}${IIQPatchLevel}"/>
            </else>
        </if>

        <if>
            <not>
                <available file="${build.iiqBinaryExtract}"/>
            </not>
            <then>
                <trycatch property="critical.failure">
                    <try>
                        <echo>Extracting GA release binary...</echo>
                        <mkdir dir="${build.iiqBinaryExtract}"/>
                        <unzip dest="${build.iiqBinaryExtract}">
                            <fileset dir="base/ga/">
                                <include name="identityiq-${IIQVersion}.zip"/>
                            </fileset>
                        </unzip>
                        <echo>Extracting WAR file...</echo>
                        <unzip dest="${build.iiqBinaryExtract}">
                            <fileset dir="${build.iiqBinaryExtract}">
                                <include name="identityiq.war"/>
                            </fileset>
                        </unzip>
                        <delete file="${build.iiqBinaryExtract}/identityiq.war"/>
                        <echo>Overlaying patch version ${IIQVersion}${IIQPatchLevel}</echo>
                        <unzip dest="${build.iiqBinaryExtract}">
                            <fileset dir="base/patch">
                                <include name="identityiq-${IIQVersion}${IIQPatchLevel}.jar"/>
                            </fileset>
                        </unzip>
                        <echo>Overlaying efixes from /base/efix/${IIQVersion}${IIQPatchLevel}</echo>

                        <orderedFileListing folderPath="base/efix/${IIQVersion}${IIQPatchLevel}"
                                            fileExtensions=".zip,.jar" property="efixFiles"/>

                        <if>
                            <and>
                                <not>
                                    <equals arg1="${efixFiles}" arg2=""/>
                                </not>
                                <isset property="efixFiles"/>
                            </and>
                            <then>
                                <echo>Found efix(es): ${efixFiles}</echo>
                                <for list="${efixFiles}" param="efixFile">
                                    <sequential>
                                        <echo>Applying efix: @{efixFile}</echo>
                                        <unzip src="@{efixFile}" dest="${build.iiqBinaryExtract}"/>
                                    </sequential>
                                </for>
                            </then>
                        </if>

                    </try>
                    <catch>
                        <echo>Critical failure while extracting core binaries. Make sure required files exit,
                            ${line.separator}
                            are not corrupted and a directory exists for /base/efix/x.xpx version your are
                            building.${line.separator}
                            Note: You need a directory (Ex. /base/efix/5.1p3 ) even if you don't have any efixes yet.
                        </echo>
                        <fail message="${critical.failure}"/>
                    </catch>
                </trycatch>
            </then>
            <else>
                <echo>Binaries already extracted. Use clean to force a expansion</echo>
            </else>
        </if>
    </target>

    <target name="-expandAP" if="${deployAcceleratorPack}"
            description="Expands the Accelerator Pack contents into the extract directory">
        <if>
        	<available file="base/ap/Accelerator_Pack-${IIQVersion}-${acceleratorPackVersion}.zip"/>
        	<then>
        		<property name="acceleratorPackZipName" value="Accelerator_Pack-${IIQVersion}-${acceleratorPackVersion}.zip"/>
        	</then>
        </if>
        <if>
         	<available file="base/ap/Accelerator_Pack_${IIQVersion}-${acceleratorPackVersion}.zip"/>
         	<then>
         		<property name="acceleratorPackZipName" value="Accelerator_Pack_${IIQVersion}-${acceleratorPackVersion}.zip"/>
         	</then>
         </if>
         <if>
         	<available file="base/ap/Accelerator_Pack-${acceleratorPackVersion}.zip"/>
         	<then>
         		<property name="acceleratorPackZipName" value="Accelerator_Pack-${acceleratorPackVersion}.zip"/>
         	</then>
         </if>

         <if>	
             <or>
                 <equals arg1="${acceleratorPackZipName}" arg2=""/>
                 <not>
                     <isset property="acceleratorPackZipName"/>
                 </not>
            </or>
            <then>
                <property name="critical.failure"
                    value="Could not find Accelerator Pack binaries for the specified Accelerator Pack version ${acceleratorPackVersion} and IdentityIQ version ${IIQVersion} in the /base/ap directory.
                    You can download these files from https://community.sailpoint.com "/>
                <fail message="${critical.failure}"/>
            </then>
        </if>


        <trycatch property="critical.failure">
            <try>
                <echo>Extracting Accelerator Pack zip file...base/ap/${acceleratorPackZipName}</echo>
                <unzip dest="${build.iiqBinaryExtract}" src="base/ap/${acceleratorPackZipName}">
                    <cutdirsmapper dirs="1" />
                </unzip>

            </try>
            <catch>
                <echo>Critical failure while extracting Accelerator Pack zip file.
                </echo>
                <fail message="${critical.failure}"/>
            </catch>
        </trycatch>

    </target>

    <target name="-laydownWebDirectoryOverrides">
        <!-- Revised 2013-02-25 by Adam E. Hampton.  Added the force overwrite to true. -->
        <!-- We had problems where UI customizations that were written before a patch   -->
        <!-- Ended up with a date stamp in SVN from before the patch came out.  This    -->
        <!-- caused the build to see the newer patch files unzipped from the patch      -->
        <!-- and to not overwrite the UI customizations.  While I can see this maybe    -->
        <!-- being the correct call because it would 'force' a knowledgeable developer  -->
        <!-- to review and re-check in the UI customizations after a patch it causes    -->
        <!-- more problems that it fixes by making the UI customizations break after    -->
        <!-- every patch gets appled.                                                   -->
        <!-- Behavior is now to forcefuly overwrite customizations checked into source  -->
        <!--  control from the services standard build regardless of modification date  -->
        <!-- specificall for the /web/** items.                                         -->
        <copy todir="${build.iiqBinaryExtract}" overwrite="true">
            <fileset dir="web">
                <include name="**/*"/>
                <exclude name="**/.keep"/>
            </fileset>
        </copy>

        <!-- Added 2012-02-14 for automating branded IIQ splash screens.           -->
        <!-- Copy in the appropriate branding screen based TARGET environment or   -->
        <!-- copy in the appropriate branding screen based on what host we run on. -->
        <!-- If you want to setup IIQ from this build w/ correct branding add your -->
        <!-- login.gif.TARGETNAME to the web/images directory or  -->
        <!-- login.gif.HOSTNAME to the web/images directory. -->
        <if>
            <available file="web/images/login-${target}.gif"/>
            <then>
                <copy file="web/images/login-${target}.gif" tofile="${build.iiqBinaryExtract}/images/login.gif"
                      overwrite="true" failonerror="false"/>
            </then>
        </if>
        <if>
            <available file="web/images/headerSPLogo-${target}.jpg"/>
            <then>
                <copy file="web/images/headerSPLogo-${target}.jpg"
                      tofile="${build.iiqBinaryExtract}/images/headerSPLogo.jpg" overwrite="true" failonerror="false"/>
            </then>
        </if>
        <if>
            <available file="web/images/login-${env.HOSTNAME}.gif"/>
            <then>
                <copy file="web/images/login-${env.HOSTNAME}.gif" tofile="${build.iiqBinaryExtract}/images/login.gif"
                      overwrite="true" failonerror="false"/>
            </then>
        </if>
        <if>
            <available file="web/images/headerSPLogo-${env.HOSTNAME}.jpg"/>
            <then>
                <copy file="web/images/headerSPLogo-${env.HOSTNAME}.jpg"
                      tofile="${build.iiqBinaryExtract}/images/headerSPLogo.jpg" overwrite="true" failonerror="false"/>
            </then>
        </if>
        <!-- end support for automated branding images. -->

        <!-- Added 2012-02-14 for automating re-naming of license.bea files.  -->
        <!-- This is necessary to support communicating with the CTSA PIM     -->
        <!-- when the CTSA PIM is hosted on WebLogic.  This takes files like  -->
        <!-- dev-license.bea and re-names them to license.bea where           -->
        <!-- appropriate.  -->
        <if>
            <available file="web/WEB-INF/classes/${target}-license.bea"/>
            <then>
                <copy file="web/WEB-INF/classes/${target}-license.bea"
                      tofile="${build.iiqBinaryExtract}/WEB-INF/classes/license.bea" overwrite="true"
                      failonerror="false"/>
            </then>
        </if>

    </target>

    <!-- Create a simple html page displaying version and build information for support purposes -->
    <target name="-createVersionPage">
        <if>
            <available file="Release-Notes-ServicesStandardBuild.txt"/>
            <then>
                <loadfile property="releasenotes" srcfile="Release-Notes-ServicesStandardBuild.txt"/>
            </then>
        </if>
        <if>
            <available file="Release-Notes-ServicesStandardDeployment.txt"/>
            <then>
                <loadfile property="releasenotes" srcfile="Release-Notes-ServicesStandardDeployment.txt"/>
            </then>
        </if>
        <echo file="${build.iiqBinaryExtract}/ServicesStandardVersion.html" append="false">&lt;html&gt;&lt;b&gt;Services
            Standard version information&lt;/b&gt;&lt;br&gt;&lt;br&gt;
        </echo>
        <if>
            <isset property="releasenotes"/>
            <then>
                <for param="line" list="${releasenotes}" delimiter="${line.separator}">
                    <sequential>
                        <if>
                            <matches string="@{line}" pattern="^Release.*"/>
                            <then>
                                <echo file="${build.iiqBinaryExtract}/ServicesStandardVersion.html" append="true">
                                    @{line}&lt;br&gt;
                                </echo>
                            </then>
                        </if>
                    </sequential>
                </for>
            </then>
            <else>
                <echo file="${build.iiqBinaryExtract}/ServicesStandardVersion.html" append="true">Version information
                    not found. Release Notes may have been deleted.&lt;br&gt;
                </echo>
            </else>
        </if>
        <tstamp>
            <format property="today" pattern="yyyy-MM-dd HH:mm z" timezone="UTC"/>
        </tstamp>

        <echo file="${build.iiqBinaryExtract}/ServicesStandardVersion.html" append="true">&lt;br&gt;Build timestamp:
            ${today}
        </echo>
        <echo file="${build.iiqBinaryExtract}/ServicesStandardVersion.html" append="true">&lt;/html&gt;</echo>
    </target>

    <target name="dist" depends="init-properties"
            description="Take the finished iiq build and copy it to the application server directory">
        <mkdir dir="${IIQHome}"/>
        <copy todir="${IIQHome}">
            <fileset dir="${build.iiqBinaryExtract}">
                <include name="**/*"/>
            </fileset>
        </copy>
    </target>

</project>

which are the default files, i did not change anything here

where I should place identityiq-8.3.zip??

Hi @fugitiva ,

It seems your build war command is failed because the IIQ Zip file is not present in GA folder. Please download zip file and place this downloaded iiq 8.3 zip file in SSB Build/base/ga

Also if your IIQ is on patch version then download the patched version and place the jar file in SSB Build/base/patch

Hello @fugitiva, if this answers your question kindly do mark the suitable reply as the solution. If there is anything else which you need to discuss regarding this, do let me know?

Thank you! @kavindar_sharma i got it

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.