<?xml version="1.0" encoding="UTF-8"?>
<?asciidoc-toc maxdepth="2"?>
<?asciidoc-numbered?>
<article xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
<info>
<title>ISML Gradle Plugins</title>
<date>2019-02-19</date>
</info>
<note>
<simpara>Version 2 of this plugin will only work with Gradle 5 and JDK 8.</simpara>
</note>
<section xml:id="asciidocsummary">
<title>Summary</title>
<simpara>This package provides two plugins - one plugin for the ISML tag lib support and one for the compilation of ISML files.
These plugins compile ISML files of Intershop to Java class files. It generates also JSP and Java files from ISML files.
All files of the output have the same time stamp.</simpara>
</section>
<section xml:id="asciidocusage">
<title>Usage</title>
<simpara>To apply the ISML Gradle Plugins to your projects, add the following in your build script:</simpara>
<formalpara>
<title>build.gradle</title>
<para>
<programlisting language="groovy" linenumbering="unnumbered">plugins {
    // only necessary to use additonal TagLibs
    id 'com.intershop.gradle.ismltaglib' version '2.0.2'
    // necessary for the compilation of ISML files
    id 'com.intershop.gradle.isml' version '2.0.2'
}</programlisting>
</para>
</formalpara>
<simpara>The compiler plugin will create a default configuration for ISML templates of an Intershop project. The plugin uses the project
dependencies for the ISML task and the compilation of the files.</simpara>
</section>
<section xml:id="asciidoctasks">
<title>Tasks</title>
<simpara>The ISML Gradle plugin adds one task <literal>isml</literal> to the project. This task depends on all ISML plugin tasks 'isml2class*'.</simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="90%, options="?>
<?dbfo table-width="90%, options="?>
<?dblatex table-width="90%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="96*"/>
<colspec colname="col_2" colwidth="115*"/>
<colspec colname="col_3" colwidth="172*"/>
<tbody>
<row>
<entry align="left" valign="top"><simpara>Task name</simpara></entry>
<entry align="left" valign="top"><simpara>Type</simpara></entry>
<entry align="left" valign="top"><simpara>Description</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara>prepareTagLibs</simpara></entry>
<entry align="left" valign="top"><simpara>com.intershop.gradle.isml.tasks.PrepareTagLibs</simpara></entry>
<entry align="left" valign="top"><simpara>This task prepares the environment for ISML compilation with TagLibs.
The output of this task is directly used by the isml2class* tasks.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara>isml</simpara></entry>
<entry align="left" valign="top"><simpara>Task</simpara></entry>
<entry align="left" valign="top"><simpara>Overall <literal>isml</literal> code generation task of a project. This task depends on all <literal>isml2class</literal> tasks.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara>isml2class&lt;source set name&gt;</simpara></entry>
<entry align="left" valign="top"><simpara>com.intershop.gradle.isml.tasks.IsmlCompile</simpara></entry>
<entry align="left" valign="top"><simpara>This task compiles ISML files to class files.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocproject-extension-isml">
<title>Project Extension 'isml'</title>
<simpara>This plugin adds an extension <emphasis role="strong"><literal>isml</literal></emphasis> to the project.</simpara>
<section xml:id="asciidocproperties">
<title>Properties</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="90%, options="?>
<?dbfo table-width="90%, options="?>
<?dblatex table-width="90%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="65*"/>
<colspec colname="col_2" colwidth="65*"/>
<colspec colname="col_3" colwidth="65*"/>
<colspec colname="col_4" colwidth="188*"/>
<tbody>
<row>
<entry align="left" valign="top"><simpara>Property</simpara></entry>
<entry align="left" valign="top"><simpara>Type</simpara></entry>
<entry align="left" valign="top"><simpara>Default value</simpara></entry>
<entry align="left" valign="top"><simpara>Description</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">jspCompilerVersion</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'7.0.42'</simpara></entry>
<entry align="left" valign="top"><simpara>The version of JSP compiler.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">eclipseCompilerVersion</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'4.2.2'</simpara></entry>
<entry align="left" valign="top"><simpara>The version of Eclipse Java compiler. This version depends on the JSP compiler. Please check the used Tomcat version.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">encoding</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'UTF-8'</simpara></entry>
<entry align="left" valign="top"><simpara>Template encoding. This is also used for JSP and Java compilation.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">sourceSetName</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'main'</simpara></entry>
<entry align="left" valign="top"><simpara>Name of the Java source set, which can be used for ISML compilation.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">ismlConfigurationName</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'runtime'</simpara></entry>
<entry align="left" valign="top"><simpara>Name of the configuration, which is used for the classpath of ISML compilation.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">sourceCompatibility</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'1.6'</simpara></entry>
<entry align="left" valign="top"><simpara>This Java source compatibility is used for the compilation of java files.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">targetCompatibility</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'1.6'</simpara></entry>
<entry align="left" valign="top"><simpara>This Java target compatibility is used for the compilation of java files.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">taglibFolder</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>File</literal></simpara></entry>
<entry align="left" valign="top"><simpara>null</simpara></entry>
<entry align="left" valign="top"><simpara>Folder with WEB-INF and TagLib configuration files.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocmethods">
<title>Methods</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="90%"?>
<?dbfo table-width="90%"?>
<?dblatex table-width="90%"?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="77*"/>
<colspec colname="col_2" colwidth="57*"/>
<colspec colname="col_3" colwidth="249*"/>
<thead>
<row>
<entry align="left" valign="top">Method</entry>
<entry align="left" valign="top">Values</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">sourceSets</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><link linkend="ismlSourceSet">IsmlSourceSet</link></simpara></entry>
<entry align="left" valign="top"><simpara>This contains all folders with ISML templates.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<section xml:id="asciidocobject-sourceset-ismlsourceset">
<title><anchor xml:id="ismlSourceSet" xreflabel="[ismlSourceSet]"/>Object 'sourceSet' (IsmlSourceSet)</title>
<section xml:id="asciidocproperties-2">
<title>Properties</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="90%, options="?>
<?dbfo table-width="90%, options="?>
<?dblatex table-width="90%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="65*"/>
<colspec colname="col_2" colwidth="65*"/>
<colspec colname="col_3" colwidth="57*"/>
<colspec colname="col_4" colwidth="195*"/>
<tbody>
<row>
<entry align="left" valign="top"><simpara>Property</simpara></entry>
<entry align="left" valign="top"><simpara>Type</simpara></entry>
<entry align="left" valign="top"><simpara>Default value</simpara></entry>
<entry align="left" valign="top"><simpara>Description</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">name</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'main'</simpara></entry>
<entry align="left" valign="top"><simpara>The name of the ISML source set</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">srcDir</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>File</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'&lt;project&nbsp;dir&gt;/staticfiles/cartridge/templates'</simpara></entry>
<entry align="left" valign="top"><simpara>The input directory of the task.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">outputDir</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>File</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'&lt;project&nbsp;builddir&gt;/generated/isml/main'</simpara></entry>
<entry align="left" valign="top"><simpara>The output directory of the compiler task.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">jspPackage</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'ish.cartridges.&lt;project&nbsp;name&gt;</simpara></entry>
<entry align="left" valign="top"><simpara>The package name of the compiled JSP files.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">taskName</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>'isml2classMain'</simpara></entry>
<entry align="left" valign="top"><simpara>The task name.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
</section>
<section xml:id="asciidocexample-configurations">
<title>Example Configurations</title>
<section xml:id="asciidocsimple-configuration">
<title>Simple configuration</title>
<programlisting language="groovy" linenumbering="unnumbered">plugins {
    id 'com.intershop.gradle.ismltaglib' version '2.0.2'
    id 'com.intershop.gradle.isml' version '2.0.2'
}

configurations {
    compile
    runtime.extendsFrom(compile)
}

dependencies {
    compile "com.intershop.platform:core:&lt;ICM platform version&gt;"
    compile "com.intershop.platform:isml:&lt;ICM platform version&gt;"
    ...
}</programlisting>
</section>
<section xml:id="asciidocconfiguration-with-additional-java-vm-settings-for-process-runner">
<title>Configuration with additional Java VM settings for process runner</title>
<programlisting language="groovy" linenumbering="unnumbered">plugins {
    id 'com.intershop.gradle.ismltaglib' version '2.0.2'
    id 'com.intershop.gradle.isml' version '2.0.2'
}

configurations {
    compile
    runtime.extendsFrom(compile)
}

tasks.withType(com.intershop.gradle.isml.tasks.IsmlCompile) {
    forkOptions { JavaForkOptions options ->
        options.setMaxHeapSize('64m')
        options.jvmArgs += ['-Dhttp.proxyHost=10.0.0.100', '-Dhttp.proxyPort=8800']
    }
}

dependencies {
    compile "com.intershop.platform:core:&lt;ICM platform version&gt;"
    compile "com.intershop.platform:isml:&lt;ICM platform version&gt;"
    ...
}</programlisting>
</section>
</section>
</section>
<section xml:id="asciidoclicense">
<title>License</title>
<simpara>Copyright 2014-2018 Intershop Communications.</simpara>
<simpara>Licensed 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</simpara>
<simpara><link xl:href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</link></simpara>
<simpara>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.</simpara>
</section>
</article>