Added: ant/site/ant/production/manual/Tasks/imageio.html URL: http://svn.apache.org/viewvc/ant/site/ant/production/manual/Tasks/imageio.html?rev=1859109&view=auto ============================================================================== --- ant/site/ant/production/manual/Tasks/imageio.html (added) +++ ant/site/ant/production/manual/Tasks/imageio.html Sat May 11 11:38:01 2019 @@ -0,0 +1,698 @@ +<!DOCTYPE html> +<!-- + 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. +--> +<html lang="en"> + +<head> +<link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> +<title>Image Task</title> +</head> + +<body> + +<h2 id="imageio">ImageIO</h2> +<h3>Description</h3> +<p>Applies a chain of image operations on a set of files.</p> +<p>Uses AWT and ImageIO; replaces <a href="image.html">image</a> task for Java 9+. The task can be +used with Java 8 as well, see parameter table for limitations.</p> +<p><strong>Note</strong>: this task tries to stay as close as possible to syntax and semantics +of <code>image</code> task. However, it uses <var>format</var> attribute rather +than <var>encoding</var> attribute, because the latter is a misnomer: almost all tasks use similar +attributes for character encodings in files, file names or other strings. Also, +when <var>format</var> is not specified, its value is defined by the format of the first processed +image file.</p> +<h5>Overview of used datatypes</h5> +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" + color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" + stroke-linecap="square" viewBox="0 0 1504 957" stroke-miterlimit="10" shape-rendering="auto" + stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" + font-family="Sans-Serif" font-style="normal" stroke-linejoin="miter" font-size="12px" role="img" + stroke-dashoffset="0" image-rendering="auto" aria-labelledby="diagramTitle diagramDescription"> + <title id="diagramTitle">ImageOperation class diagram</title> + <desc id="diagramDescription">A diagram of Ant DataType classes used by ImageIO task.</desc> + <defs id="genericDefs"/> + <g> + <defs id="defs1"> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> + <path d="M0 0 L1504 0 L1504 957 L0 957 L0 0 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> + <path d="M-435 -129 L1069 -129 L1069 828 L-435 828 L-435 -129 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> + <path d="M207 -113 L207 -66 L452 -66 L452 -113 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> + <path d="M239 26 L239 130 L421 130 L421 26 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> + <path d="M-24 106 L-24 221 L144 221 L144 106 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> + <path d="M527 105 L527 166 L913 166 L913 105 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> + <path d="M206 478 L206 562 L452 562 L452 478 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> + <path d="M562 541 L562 812 L813 812 L813 541 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> + <path d="M257 272 L257 402 L403 402 L403 272 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> + <path d="M449 272 L449 331 L571 331 L571 272 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> + <path d="M614 272 L614 360 L826 360 L826 272 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> + <path d="M874 272 L874 402 L1054 402 L1054 272 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> + <path d="M0 272 L0 346 L122 346 L122 272 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> + <path d="M-166 272 L-166 317 L-44 317 L-44 272 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> + <path d="M-375 272 L-375 360 L-208 360 L-208 272 Z"/> + </clipPath> + </defs> + <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="translate(435,129)" stroke="white"> + <rect x="-435" width="1504" height="957" y="-129" clip-path="url(#clipPath2)" stroke="none"/> + </g> + <g fill="rgb(255,204,153)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)" stroke="rgb(255,204,153)"> + <rect x="208" width="243" height="45" y="-112" clip-path="url(#clipPath2)" stroke="none"/> + <rect x="207" y="-113" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="47" stroke="none"/> + <rect x="208" y="-113" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="243" height="1" stroke="none"/> + <rect x="208" y="-67" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="244" height="1" stroke="none"/> + <rect x="451" y="-113" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="46" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="214.5425" xml:space="preserve" y="-95.5533" clip-path="url(#clipPath3)" stroke="none">org.apache.tools.ant.types.DataType</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="-87" fill="none" x1="208" clip-path="url(#clipPath3)" x2="451" y1="-87"/> + <line y2="-77" fill="none" x1="208" clip-path="url(#clipPath3)" x2="451" y1="-77"/> + <text stroke-linecap="butt" x="212.5" y="-61.2095" clip-path="url(#clipPath3)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve"> </text> + <rect x="240" y="27" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="180" height="102" stroke="none"/> + <rect x="239" y="26" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="104" stroke="none"/> + <rect x="240" y="26" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="180" height="1" stroke="none"/> + <rect x="240" y="129" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="181" height="1" stroke="none"/> + <rect x="420" y="26" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="103" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" font-style="italic" stroke-miterlimit="1.45"> + <text x="279.4473" xml:space="preserve" y="43.5684" clip-path="url(#clipPath4)" stroke="none">ImageOperation</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="51" fill="none" x1="240" clip-path="url(#clipPath4)" x2="420" y1="51"/> + <text stroke-linecap="butt" x="244" y="67.9121" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">instructions : List</text> + <line y2="75" fill="none" x1="240" clip-path="url(#clipPath4)" x2="420" y1="75"/> + <text stroke-linecap="butt" x="244" y="92.0449" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">addDraw(Draw : instr)</text> + <text stroke-linecap="butt" x="244" y="106.1777" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">addRotate(Rotate : instr)</text> + <text stroke-linecap="butt" x="244" y="120.3105" clip-path="url(#clipPath4)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">addScale(Scale : instr)</text> + <path fill="none" stroke-miterlimit="1.45" d="M-419.1051 469.593 L-173.5543 469.593 L-173.5543 484.593 L-158.5543 484.593 L-158.5543 574.593 L-419.1051 574.593 Z" clip-path="url(#clipPath2)" stroke-linecap="butt"/> + <path fill="none" stroke-miterlimit="1.45" d="M-173.5543 469.593 L-173.5543 484.593 L-158.5543 484.593 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke-linecap="butt"/> + <text stroke-linecap="butt" x="-412.1051" y="491.2961" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">The setType() method forces type to</text> + <text stroke-linecap="butt" x="-412.1051" y="505.4289" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">one of the values of java.awt.geom.Arc2D:</text> + <text stroke-linecap="butt" x="-412.1051" y="519.5617" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">open = Arc2D.OPEN</text> + <text stroke-linecap="butt" x="-412.1051" y="533.6945" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">pie = Arc2D.PIE</text> + <text stroke-linecap="butt" x="-412.1051" y="547.8273" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">chord = Arc2D.CHORD</text> + <text stroke-linecap="butt" x="-412.1051" y="561.9601" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">Parameter is not case-sensitive.</text> + <rect x="-23" y="107" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="166" height="113" stroke="none"/> + <rect x="-24" y="106" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="115" stroke="none"/> + <rect x="-23" y="106" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="166" height="1" stroke="none"/> + <rect x="-23" y="220" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="167" height="1" stroke="none"/> + <rect x="143" y="106" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="114" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" font-style="italic" stroke-miterlimit="1.45"> + <text x="25.3132" xml:space="preserve" y="123.5684" clip-path="url(#clipPath5)" stroke="none">BasicShape</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="131" fill="none" x1="-23" clip-path="url(#clipPath5)" x2="143" y1="131"/> + <text stroke-linecap="butt" x="-19" y="147.9121" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">height : int = 0</text> + <text stroke-linecap="butt" x="-19" y="162.0449" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">width : int = 0</text> + <text stroke-linecap="butt" x="-19" y="176.1777" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">strokeWidth : int = 0</text> + <text stroke-linecap="butt" x="-19" y="190.3105" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">stroke : String = "black"</text> + <text stroke-linecap="butt" x="-19" y="204.4434" clip-path="url(#clipPath5)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">fill : String = "transparent"</text> + <line y2="211" fill="none" x1="-23" clip-path="url(#clipPath5)" x2="143" y1="211"/> + <rect x="528" y="106" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="384" height="59" stroke="none"/> + <rect x="527" y="105" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="61" stroke="none"/> + <rect x="528" y="105" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="384" height="1" stroke="none"/> + <rect x="528" y="165" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="385" height="1" stroke="none"/> + <rect x="912" y="105" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="60" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" font-style="italic" stroke-miterlimit="1.45"> + <text x="655.8347" xml:space="preserve" y="122.5684" clip-path="url(#clipPath6)" stroke="none">TransformOperation</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="130" fill="none" x1="528" clip-path="url(#clipPath6)" x2="912" y1="130"/> + <line y2="140" fill="none" x1="528" clip-path="url(#clipPath6)" x2="912" y1="140"/> + <text stroke-linecap="butt" x="532" y="156.9121" clip-path="url(#clipPath6)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">executeTransformOperation(BufferedImage img) : BufferedImage</text> + <rect x="207" y="479" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="244" height="82" stroke="none"/> + <rect x="206" y="478" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="84" stroke="none"/> + <rect x="207" y="478" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="244" height="1" stroke="none"/> + <rect x="207" y="561" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="245" height="1" stroke="none"/> + <rect x="451" y="478" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="83" stroke="none"/> + <text stroke-linecap="butt" x="284.4863" y="494.6016" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve"><<interface>></text> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" font-style="italic" stroke-miterlimit="1.45"> + <text x="281.5259" xml:space="preserve" y="518.7012" clip-path="url(#clipPath7)" stroke="none">DrawOperation</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="526" fill="none" x1="207" clip-path="url(#clipPath7)" x2="451" y1="526"/> + <line y2="536" fill="none" x1="207" clip-path="url(#clipPath7)" x2="451" y1="536"/> + <text stroke-linecap="butt" x="211" y="553.0449" clip-path="url(#clipPath7)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">executeDrawOperation() : BufferedImage</text> + <path fill="none" stroke-miterlimit="1.45" d="M220.3178 635.8665 L421.3783 635.8665 L421.3783 650.8665 L436.3783 650.8665 L436.3783 711.6233 L220.3178 711.6233 Z" clip-path="url(#clipPath2)" stroke-linecap="butt"/> + <path fill="none" stroke-miterlimit="1.45" d="M421.3783 635.8665 L421.3783 650.8665 L436.3783 650.8665 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke-linecap="butt"/> + <text stroke-linecap="butt" x="227.3178" y="657.0809" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">The implementing class uses</text> + <text stroke-linecap="butt" x="227.3178" y="671.2137" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">ColorMapper to evaluate the color.</text> + <text stroke-linecap="butt" x="227.3178" y="685.3465" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">Only the values defined in</text> + <text stroke-linecap="butt" x="227.3178" y="699.4793" clip-path="url(#clipPath2)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">ColorMapper are used.</text> + <rect x="563" y="542" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="249" height="269" stroke="none"/> + <rect x="562" y="541" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="271" stroke="none"/> + <rect x="563" y="541" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="249" height="1" stroke="none"/> + <rect x="563" y="811" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="250" height="1" stroke="none"/> + <rect x="812" y="541" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="270" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="647.6754" xml:space="preserve" y="558.9055" clip-path="url(#clipPath8)" stroke="none">ColorMapper</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="566" fill="none" x1="563" clip-path="url(#clipPath8)" x2="812" y1="566"/> + <text stroke-linecap="butt" x="567.7103" y="583.2493" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_BLACK : String = "black"</text> + <text stroke-linecap="butt" x="567.7103" y="597.3821" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_BLUE : String = "blue"</text> + <text stroke-linecap="butt" x="567.7103" y="611.5149" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_CYAN : String = "cyan"</text> + <text stroke-linecap="butt" x="567.7103" y="625.6477" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_DARKGRAY : String = "darkgray"</text> + <text stroke-linecap="butt" x="567.7103" y="639.7805" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_GRAY : String = "gray"</text> + <text stroke-linecap="butt" x="567.7103" y="653.9133" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_LIGHTGRAY : String = "lightgray"</text> + <text stroke-linecap="butt" x="567.7103" y="668.0461" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_DARKGREY : String = "darkgrey"</text> + <text stroke-linecap="butt" x="567.7103" y="682.179" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_GREY : String = "grey"</text> + <text stroke-linecap="butt" x="567.7103" y="696.3118" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_LIGHTGREY : String = "lightgrey"</text> + <text stroke-linecap="butt" x="567.7103" y="710.4446" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_GREEN : String = "green"</text> + <text stroke-linecap="butt" x="567.7103" y="724.5774" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_MAGENTA : String = "magenta"</text> + <text stroke-linecap="butt" x="567.7103" y="738.7102" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_ORANGE : String = "orange"</text> + <text stroke-linecap="butt" x="567.7103" y="752.843" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_PINK : String = "pink"</text> + <text stroke-linecap="butt" x="567.7103" y="766.9758" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_RED : String = "red"</text> + <text stroke-linecap="butt" x="567.7103" y="781.1086" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_WHITE : String = "white"</text> + <text stroke-linecap="butt" x="567.7103" y="795.2415" clip-path="url(#clipPath8)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">COLOR_YELLOW : String = "yellow"</text> + <line y2="802" fill="none" x1="563" clip-path="url(#clipPath8)" x2="812" y1="802"/> + <rect x="258" y="273" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="144" height="128" stroke="none"/> + <rect x="257" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="130" stroke="none"/> + <rect x="258" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="144" height="1" stroke="none"/> + <rect x="258" y="401" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="145" height="1" stroke="none"/> + <rect x="402" y="272" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="129" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="315.8511" xml:space="preserve" y="289.5684" clip-path="url(#clipPath9)" stroke="none">Text</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="297" fill="none" x1="258" clip-path="url(#clipPath9)" x2="402" y1="297"/> + <text stroke-linecap="butt" x="262" y="313.9121" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">string : String = ""</text> + <text stroke-linecap="butt" x="262" y="328.0449" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">font : String = "Arial"</text> + <text stroke-linecap="butt" x="262" y="342.1777" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">point : int = 10</text> + <text stroke-linecap="butt" x="262" y="356.3105" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">bold : boolean = false</text> + <text stroke-linecap="butt" x="262" y="370.4434" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">color : String = "black"</text> + <text stroke-linecap="butt" x="262" y="384.5762" clip-path="url(#clipPath9)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">italic : boolean = false</text> + <line y2="392" fill="none" x1="258" clip-path="url(#clipPath9)" x2="402" y1="392"/> + <rect x="450" y="273" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="120" height="57" stroke="none"/> + <rect x="449" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="59" stroke="none"/> + <rect x="450" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="120" height="1" stroke="none"/> + <rect x="450" y="330" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="121" height="1" stroke="none"/> + <rect x="570" y="272" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="58" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="489.824" xml:space="preserve" y="289.5684" clip-path="url(#clipPath10)" stroke="none">Rotate</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="297" fill="none" x1="450" clip-path="url(#clipPath10)" x2="570" y1="297"/> + <text stroke-linecap="butt" x="454" y="313.9121" clip-path="url(#clipPath10)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">angle : float = 0.0F</text> + <line y2="321" fill="none" x1="450" clip-path="url(#clipPath10)" x2="570" y1="321"/> + <rect x="615" y="273" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="210" height="86" stroke="none"/> + <rect x="614" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="88" stroke="none"/> + <rect x="615" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="210" height="1" stroke="none"/> + <rect x="615" y="359" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="211" height="1" stroke="none"/> + <rect x="825" y="272" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="87" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="704.0801" xml:space="preserve" y="289.5684" clip-path="url(#clipPath11)" stroke="none">Scale</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="297" fill="none" x1="615" clip-path="url(#clipPath11)" x2="825" y1="297"/> + <text stroke-linecap="butt" x="619" y="313.9121" clip-path="url(#clipPath11)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">width : String = "100%"</text> + <text stroke-linecap="butt" x="619" y="328.0449" clip-path="url(#clipPath11)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">height : String = "100%"</text> + <text stroke-linecap="butt" x="619" y="342.1777" clip-path="url(#clipPath11)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">keepProportions : boolean = false</text> + <line y2="349" fill="none" x1="615" clip-path="url(#clipPath11)" x2="825" y1="349"/> + <rect x="875" y="273" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="178" height="128" stroke="none"/> + <rect x="874" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="130" stroke="none"/> + <rect x="875" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="178" height="1" stroke="none"/> + <rect x="875" y="401" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="179" height="1" stroke="none"/> + <rect x="1053" y="272" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="129" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="947.8738" xml:space="preserve" y="289.5684" clip-path="url(#clipPath12)" stroke="none">Draw</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="297" fill="none" x1="875" clip-path="url(#clipPath12)" x2="1053" y1="297"/> + <text stroke-linecap="butt" x="879" y="313.9121" clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">xloc : int = 0</text> + <text stroke-linecap="butt" x="879" y="328.0449" clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">yloc : int = 0</text> + <line y2="335" fill="none" x1="875" clip-path="url(#clipPath12)" x2="1053" y1="335"/> + <text stroke-linecap="butt" x="879" y="352.1777" clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">addText(Text : text)</text> + <text stroke-linecap="butt" x="879" y="366.3105" clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">addRectangle(Rectangle rect)</text> + <text stroke-linecap="butt" x="879" y="380.4434" clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">addEllipse(Ellipse elip)</text> + <text stroke-linecap="butt" x="879" y="394.5762" clip-path="url(#clipPath12)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">addArc(Arc arc)</text> + <rect x="1" y="273" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="120" height="72" stroke="none"/> + <rect x="0" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="74" stroke="none"/> + <rect x="1" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="120" height="1" stroke="none"/> + <rect x="1" y="345" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="121" height="1" stroke="none"/> + <rect x="121" y="272" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="73" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="30.3313" xml:space="preserve" y="289.5684" clip-path="url(#clipPath13)" stroke="none">Rectangle</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="297" fill="none" x1="1" clip-path="url(#clipPath13)" x2="121" y1="297"/> + <text stroke-linecap="butt" x="5" y="313.9121" clip-path="url(#clipPath13)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">archeight : int = 0</text> + <text stroke-linecap="butt" x="5" y="328.0449" clip-path="url(#clipPath13)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">arcwidth : int = 0</text> + <line y2="335" fill="none" x1="1" clip-path="url(#clipPath13)" x2="121" y1="335"/> + <rect x="-165" y="273" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="120" height="43" stroke="none"/> + <rect x="-166" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="45" stroke="none"/> + <rect x="-165" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="120" height="1" stroke="none"/> + <rect x="-165" y="316" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="121" height="1" stroke="none"/> + <rect x="-45" y="272" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="44" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="-125.3178" xml:space="preserve" y="289.5684" clip-path="url(#clipPath14)" stroke="none">Ellipse</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="297" fill="none" x1="-165" clip-path="url(#clipPath14)" x2="-45" y1="297"/> + <line y2="307" fill="none" x1="-165" clip-path="url(#clipPath14)" x2="-45" y1="307"/> + <text stroke-linecap="butt" x="-161.1323" y="323.9121" clip-path="url(#clipPath14)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve"> </text> + <rect x="-374" y="273" clip-path="url(#clipPath2)" fill="rgb(255,204,153)" width="165" height="86" stroke="none"/> + <rect x="-375" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="1" height="88" stroke="none"/> + <rect x="-374" y="272" clip-path="url(#clipPath2)" fill="rgb(255,255,218)" width="165" height="1" stroke="none"/> + <rect x="-374" y="359" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="166" height="1" stroke="none"/> + <rect x="-209" y="272" clip-path="url(#clipPath2)" fill="rgb(178,142,107)" width="1" height="87" stroke="none"/> + </g> + <g font-size="13px" stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" text-rendering="geometricPrecision" font-family="sans-serif" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="-302.3427" xml:space="preserve" y="289.5684" clip-path="url(#clipPath15)" stroke="none">Arc</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1,0,0,1,435,129)"> + <line y2="297" fill="none" x1="-374" clip-path="url(#clipPath15)" x2="-209" y1="297"/> + <text stroke-linecap="butt" x="-370.369" y="313.9121" clip-path="url(#clipPath15)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">start : int = 0</text> + <text stroke-linecap="butt" x="-370.369" y="328.0449" clip-path="url(#clipPath15)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">stop : int = 0</text> + <text stroke-linecap="butt" x="-370.369" y="342.1777" clip-path="url(#clipPath15)" font-family="sans-serif" stroke="none" stroke-miterlimit="1.45" xml:space="preserve">type : enumerated = open</text> + <line y2="349" fill="none" x1="-374" clip-path="url(#clipPath15)" x2="-209" y1="349"/> + <path fill="none" stroke-miterlimit="1.45" d="M330 25.9866 L330 -51.1105" clip-path="url(#clipPath2)" stroke-linecap="butt"/> + </g> + <g stroke-linecap="butt" transform="matrix(1,0,0,1,435,129)" fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <path d="M330 -66.1105 L324 -50.1105 L336 -50.1105 Z" stroke="none" clip-path="url(#clipPath2)"/> + <path fill="none" d="M330 -66.1105 L324 -50.1105 L336 -50.1105 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="358.1016" xml:space="preserve" y="-15.5257" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M144.0125 136.8961 L224.6586 111.3581" clip-path="url(#clipPath2)" stroke="black"/> + <path d="M238.9587 106.8297 L221.8939 105.9399 L225.5166 117.3801 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M238.9587 106.8297 L221.8939 105.9399 L225.5166 117.3801 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="189.6807" xml:space="preserve" y="157.8367" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M527.0471 119.4512 L435.6495 100.2246" clip-path="url(#clipPath2)" stroke="black"/> + <path d="M420.9707 97.1368 L435.3929 106.302 L437.8632 94.559 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M420.9707 97.1368 L435.3929 106.302 L437.8632 94.559 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="479.6386" xml:space="preserve" y="83.7562" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M297.296 477.9833 L103.3633 220.9684" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="234.5212" xml:space="preserve" y="352.0335" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" stroke-dasharray="6,2" d="M328.5086 635.8717 L328.8219 562.0092" clip-path="url(#clipPath2)" stroke="gray"/> + <text fill="black" x="356.7671" xml:space="preserve" y="603.4684" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" stroke-dasharray="6,2" d="M562.7084 675.8958 L436.4021 674.7366" clip-path="url(#clipPath2)" stroke="gray"/> + <text fill="black" x="497.6459" xml:space="preserve" y="649.85" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M329.2297 477.9583 L329.6448 402.0074" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="357.5392" xml:space="preserve" y="444.5352" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M330 272.0287 L330 144.9652" clip-path="url(#clipPath2)" stroke="black"/> + <path d="M330 129.9652 L324 145.9652 L336 145.9652 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M330 129.9652 L324 145.9652 L336 145.9652 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="358.1016" xml:space="preserve" y="205.5352" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M363.7992 477.991 L485.5677 330.9942" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="459.6346" xml:space="preserve" y="411.5709" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M547.2986 272.0164 L669.6319 175.3148" clip-path="url(#clipPath2)" stroke="black"/> + <path d="M681.3994 166.0128 L665.1266 171.2279 L672.5682 180.6419 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M681.3994 166.0128 L665.1266 171.2279 L672.5682 180.6419 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="638.0605" xml:space="preserve" y="241.5466" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M409.4958 478.0022 L635.665 360.0009" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="553.3226" xml:space="preserve" y="440.3445" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M720 271.9767 L720 180.9874" clip-path="url(#clipPath2)" stroke="black"/> + <path d="M720 165.9874 L714 181.9874 L726 181.9874 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M720 165.9874 L714 181.9874 L726 181.9874 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="748.1016" xml:space="preserve" y="223.5352" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M885.2778 271.9897 L768.5073 175.5583" clip-path="url(#clipPath2)" stroke="black"/> + <path d="M756.9413 166.0069 L765.4578 180.8214 L773.0989 171.5687 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M756.9413 166.0069 L765.4578 180.8214 L773.0989 171.5687 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="860.838" xml:space="preserve" y="219.0024" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M60.7458 272.0211 L60.4984 236.019" clip-path="url(#clipPath2)" stroke="black"/> + <path d="M60.3953 221.0194 L54.5054 237.0602 L66.5051 236.9778 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M60.3953 221.0194 L54.5054 237.0602 L66.5051 236.9778 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="88.6727" xml:space="preserve" y="251.0352" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M-76.7703 272.0004 L-24.2436 230.3307" clip-path="url(#clipPath2)" stroke="black"/> + <path d="M-12.4923 221.0084 L-28.756 226.2517 L-21.2981 235.6528 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M-12.4923 221.0084 L-28.756 226.2517 L-21.2981 235.6528 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="-16.4339" xml:space="preserve" y="265.4579" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" stroke-dasharray="6,2" d="M-289.604 469.5886 L-291.2204 359.9842" clip-path="url(#clipPath2)" stroke="gray"/> + <text fill="black" x="-262.3073" xml:space="preserve" y="419.3316" clip-path="url(#clipPath2)" stroke="none"> </text> + <path fill="none" d="M-278.4248 271.9972 L-38.2704 195.005" clip-path="url(#clipPath2)" stroke="black"/> + <path d="M-23.9865 190.4256 L-41.0544 189.5967 L-37.391 201.0238 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M-23.9865 190.4256 L-41.0544 189.5967 L-37.391 201.0238 Z" clip-path="url(#clipPath2)" stroke="black"/> + <text fill="black" x="-118.083" xml:space="preserve" y="256.023" clip-path="url(#clipPath2)" stroke="none"> </text> + </g> + </g> +</svg> +<h3>Parameters</h3> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>failonerror</td> + <td>Boolean value. If <q>false</q>, note errors to the output but keep going.</td> + <td>No; defaults to <q>true</q></td> + </tr> + <tr> + <td>srcdir</td> + <td>Directory containing the images.</td> + <td>Yes, unless nested fileset is used</td> + </tr> + <tr> + <td>format</td> + <td>Image format.<br/>Valid (case insensitive) + are: <q>bmp</q>, <q>gif</q>, <q>jpeg</q>, <q>jpg</q>, <q>png</q>, <q>tif</q>, <q>tiff</q>, <q>wbmp</q> + (Java 8 VM lacks support for TIFF, which can be provided + by <a href="../install.html#librarydependencies">external libraries</a>).</td> + <td>No; defaults to the format of the (first) original file</td> + </tr> + <tr> + <td>overwrite</td> + <td>Boolean value. Sets whether or not to overwrite a file if there is naming conflict.</td> + <td>No; defaults to <q>false</q></td> + </tr> + <tr> + <td>gc</td> + <td>Boolean value. Enables garbage collection after each image processed.</td> + <td>No; defaults to <q>false</q></td> + </tr> + <tr> + <td>destdir</td> + <td>Directory where the result images are stored.</td> + <td>No; defaults to value of <var>srcdir</var></td> + </tr> + <!-- attributes inherited from MatchingTask --> + <tr> + <td>includes</td> + <td>comma- or space-separated list of patterns of files that must be included.</td> + <td>No; defaults to all (<q>**</q>)</td> + </tr> + <tr> + <td>includesfile</td> + <td>name of a file. Each line of this file is taken to be an include pattern</td> + <td>No</td> + </tr> + <tr> + <td>excludes</td> + <td>comma- or space-separated list of patterns of files that must be excluded.</td> + <td>No; defaults to default excludes or none if <var>defaultexcludes</var> is <q>no</q></td> + </tr> + <tr> + <td>excludesfile</td> + <td>name of a file. Each line of this file is taken to be an exclude pattern</td> + <td>No</td> + </tr> + <tr> + <td>defaultexcludes</td> + <td>indicates whether default excludes should be used or not (<q>yes|no</q>).</td> + <td>No; defaults to <q>yes</q></td> + </tr> + <tr> + <td>caseSensitive</td> + <td>Boolean value. Sets case sensitivity of the file system.</td> + <td>No; defaults to <q>false</q></td> + </tr> + <tr> + <td>followSymlinks</td> + <td>Boolean value. Sets whether or not symbolic links should be followed.</td> + <td>No; defaults to <q>true</q></td> + </tr> +</table> + +<h3>Parameters specified as nested elements</h3> +<p>This task forms an implicit <a href="../Types/fileset.html">FileSet</a> and supports most +attributes of <code><fileset></code> as well as the +nested <code><include></code>, <code><exclude></code> +and <code><patternset></code> elements.</p> + +<p>The following ImageOperation objects can be specified as nested +elements: <code>Rotate</code>, <code>Scale</code> and <code>Draw</code>.</p> + +<h4>Rotate</h4> +<p>Adds a Rotate ImageOperation to chain.</p> +<h5>Parameters</h5> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>angle</td> + <td>Float value. Sets the angle of rotation in degrees.</td> + <td>No; defaults to <q>0.0F</q></td> + </tr> +</table> + +<h4>Scale</h4> +<p>Adds a Scale ImageOperation to chain.</p> +<h5>Parameters</h5> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>proportions</td> + <td>Sets which dimension to control proportions from. Valid values are: + <ul> + <li><q>ignore</q>—treat the dimensions independently.</li> + <li><q>height</q>—keep proportions based on the width.</li> + <li><q>width</q>—keep proportions based on the height.</li> + <li><q>cover</q>—keep proportions and fit in the supplied dimensions.</li> + <li><q>fit</q>—keep proportions and cover the supplied dimensions.</li> + </ul> + </td> + <td>No; defaults to <q>ignore</q></td> + </tr> + <tr> + <td>width</td> + <td>Sets the width of the image, either as an integer (pixels) or a %.</td> + <td>No; defaults to <q>100%</q></td> + </tr> + <tr> + <td>height</td> + <td>Sets the height of the image, either as an integer (pixels) or a %.</td> + <td>No; defaults to <q>100%</q></td> + </tr> +</table> + +<h4 id="draw">Draw</h4> +<p>Adds a Draw ImageOperation to chain. DrawOperation DataType objects can be nested inside the Draw +object.</p> +<h5>Parameters</h5> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>xloc</td> + <td>X-Position where to draw nested image elements.</td> + <td>No; defaults to <q>0</q></td> + </tr> + <tr> + <td>yloc</td> + <td>Y-Position where to draw nested image elements.</td> + <td>No; defaults to <q>0</q></td> + </tr> +</table> +<h5>Nested elements</h5> +<p>Both Text and BasicShape objects can be nested. Currently supported BasicShape objects are Arc, +Ellipse and Rectangle.</p> +<h6>Common parameters of BasicShape objects</h6> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>height</td> + <td>Height of a BasicShape.</td> + <td>No; defaults to <q>0</q></td> + </tr> + <tr> + <td>width</td> + <td>Width of a BasicShape.</td> + <td>No; defaults to <q>0</q></td> + </tr> + <tr> + <td>strokewidth</td> + <td>Stroke width of a BasicShape.</td> + <td>No; defaults to <q>0</q></td> + </tr> + <tr> + <td>color</td> + <td>Color of a BasicShape.</td> + <td>No; defaults to <q>black</q></td> + </tr> + <tr> + <td>fill</td> + <td>Fill of a BasicShape.</td> + <td>No; defaults to <q>transparent</q></td> + </tr> +</table> +<h6>Parameters specific to Arc objects</h6> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>start</td> + <td>Start angle of an arc in degrees.</td> + <td>No; defaults to <q>0</q></td> + </tr> + <tr> + <td>stop</td> + <td>Angle extent of an arc in degrees.</td> + <td>No; defaults to <q>0</q></td> + </tr> + <tr> + <td>type</td> + <td>One of <q>chord</q>, <q>open</q>, <q>pie</q>.</td> + <td>No; defaults to <q>open</q></td> + </tr> +</table> +<h6>Parameters specific to Ellipse objects</h6> +<p>None.</p> +<h6>Parameters specific to Rectangle objects</h6> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>archeight</td> + <td>Vertical diameter of the arc at the corners of the rectangle.</td> + <td>No; defaults to <q>0</q></td> + </tr> + <tr> + <td>arcwidth</td> + <td>Horisontal diameter of the arc at the corners of the rectangle.</td> + <td>No; defaults to <q>0</q></td> + </tr> +</table> +<h6>Parameters of Text</h6> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>string</td> + <td>The text string.</td> + <td>No; defaults to <q></q></td> + </tr> + <tr> + <td>font</td> + <td>The font to set the text in.</td> + <td>No; defaults to <q>Arial</q></td> + </tr> + <tr> + <td>point</td> + <td>Size of the font in points.</td> + <td>No; defaults to <q>10</q></td> + </tr> + <tr> + <td>bold</td> + <td>Whether the font is bold.</td> + <td>No; defaults to <q>false</q></td> + </tr> + <tr> + <td>color</td> + <td>Color of the text.</td> + <td>No; defaults to <q>black</q></td> + </tr> + <tr> + <td>italic</td> + <td>Whether the font is italic.</td> + <td>No; defaults to <q>false</q></td> + </tr> +</table> +<h4>mapper</h4> +<p>You can define filename transformations by using a +nested <a href="../Types/mapper.html">mapper</a> element. The default mapper used +by <code><image></code> is the <a href="../Types/mapper.html#identity-mapper">identity +mapper</a>.</p> + +<p>You can also use a <code>filenamemapper</code> type in place of the <code>mapper</code> +element.</p> + +<h3>Examples</h3> + +<p>Create thumbnails of my images and make sure they all fit within the 160×160 pixel size +whether the image is portrait or landscape.</p> +<pre> +<image destdir="samples/low" overwrite="yes"> + <fileset dir="samples/full"> + <include name="**/*.jpg"/> + </fileset> + <scale width="160" height="160" proportions="fit"/> +</image></pre> + +<p>Create a thumbnail for all PNG files in <samp>src</samp> of the size of 40 pixels keeping the +proportions and store the <samp>src</samp>.</p> +<pre> +<image srcdir="src" includes="*.png"> + <scale proportions="width" width="40"/> +</image></pre> + +<p>Same as above but store the result in <samp>dest</samp>.</p> +<pre> +<image srcdir="src" destdir="dest" includes="*.png"> + <scale proportions="width" width="40"/> +</image></pre> + +<p>Same as above but store the result to files with original names prefixed +by <samp>scaled-</samp>.</p> +<pre> +<image srcdir="src" destdir="dest" includes="*.png"> + <scale proportions="width" width="40"/> + <globmapper from="*" to="scaled-*"/> +</image></pre> + +</body> +</html>
Propchange: ant/site/ant/production/manual/Tasks/imageio.html ------------------------------------------------------------------------------ svn:eol-style = native Added: ant/site/ant/production/manual/Tasks/jmod.html URL: http://svn.apache.org/viewvc/ant/site/ant/production/manual/Tasks/jmod.html?rev=1859109&view=auto ============================================================================== --- ant/site/ant/production/manual/Tasks/jmod.html (added) +++ ant/site/ant/production/manual/Tasks/jmod.html Sat May 11 11:38:01 2019 @@ -0,0 +1,332 @@ +<!DOCTYPE html> +<!-- + 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. +--> +<html lang="en"> + +<head> +<link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> +<title>Jmod Task</title> +</head> + +<body> + +<h2 id="jmod">Jmod</h2> +<p><em>Since Apache Ant 1.10.6</em></p> + +<h3>Description</h3> +<p>Creates a linkable jmod file from a modular jar file, and optionally from +other application files such as native libraries and license documents. +Equivalent to the JDK's +<a href="https://docs.oracle.com/en/java/javase/11/tools/jmod.html">jmod</a> +tool.</p> +<p>Requires Java 9 or later.</p> + +<h3>Parameters</h3> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>destFile</td> + <td>jmod file to create.</td> + <td>Yes</td> + </tr> + <tr> + <td>classpath</td> + <td>Files to be placed in the jmod file. Usually a single module.</td> + <td rowspan="2">One of these is required, unless a nested + <code><classpath></code> is present.</td> + </tr> + <tr> + <td>classpathref</td> + <td class="left">Files to be placed in the jmod file, given as a + <a href="../using.html#references">reference</a> + to a path defined elsewhere.</td> + </tr> + <tr> + <td>modulepath</td> + <td>Locations of modules on which classpath modules depend.</td> + <td>No</td> + </tr> + <tr> + <td>modulepathref</td> + <td>Locations of modules on which classpath modules depend, + given as a <a href="../using.html#references">reference</a> + to a path defined elsewhere.</td> + <td>No</td> + </tr> + <tr> + <td>commandpath</td> + <td>Directories containing native commands to include in jmod.</td> + <td>No</td> + </tr> + <tr> + <td>commandpathref</td> + <td>Directories containing native commands to include in jmod, + given as a <a href="../using.html#references">reference</a> + to a path defined elsewhere.</td> + <td>No</td> + </tr> + <tr> + <td>headerpath</td> + <td>Directories containing header files to include in jmod.</td> + <td>No</td> + </tr> + <tr> + <td>headerpathref</td> + <td>Directories containing header files to include in jmod, + given as a <a href="../using.html#references">reference</a> + to a path defined elsewhere.</td> + <td>No</td> + </tr> + <tr> + <td>configpath</td> + <td>Directories containing user-editable configuration files + to include in jmod.</td> + <td>No</td> + </tr> + <tr> + <td>configpathref</td> + <td>Directories containing user-editable configuration files + to include in jmod, + given as a <a href="../using.html#references">reference</a> + to a path defined elsewhere.</td> + <td>No</td> + </tr> + <tr> + <td>legalpath</td> + <td>Directories containing legal licenses and notices to include in jmod.</td> + <td>No</td> + </tr> + <tr> + <td>legalpathref</td> + <td>Directories containing legal licenses and notices to include in jmod, + given as a <a href="../using.html#references">reference</a> + to a path defined elsewhere.</td> + <td>No</td> + </tr> + <tr> + <td>nativelibpath</td> + <td>Directories containing native libraries to include in jmod.</td> + <td>No</td> + </tr> + <tr> + <td>nativelibpathref</td> + <td>Directories containing native libraries to include in jmod, + given as a <a href="../using.html#references">reference</a> + to a path defined elsewhere.</td> + <td>No</td> + </tr> + <tr> + <td>manpath</td> + <td>Directories containing man pages to include in jmod.</td> + <td>No</td> + </tr> + <tr> + <td>manpathref</td> + <td>Directories containing man pages to include in jmod, + given as a <a href="../using.html#references">reference</a> + to a path defined elsewhere.</td> + <td>No</td> + </tr> + <tr> + <td>version</td> + <td><a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/module/ModuleDescriptor.Version.html">Module version</a> of jmod.</td> + <td>No</td> + </tr> + <tr> + <td>mainclass</td> + <td>Class that acts as executable entry point of module.</td> + <td>No</td> + </tr> + <tr> + <td>platform</td> + <td>The target platform for the jmod. Typically takes the form + <var>OS</var><code>-</code><var>architecture</var>. A particular JDK's + platform can be seen by running a command like + <samp>jmod describe $JDK_HOME/jmods/java.base.jmod | grep -i platform</samp></td> + <td>No</td> + </tr> + <tr> + <td>hashModulesPattern</td> + <td>Regular expression for names of modules in the module path + which depend on the jmod being created, and which should have + hashes generated for them and included in the new jmod.</td> + <td>No</td> + </tr> + <tr> + <td>resolveByDefault</td> + <td>Boolean indicating whether the jmod should be one of + the default resolved modules when it is in a module path + searched by tools and applications.</td> + <td>No. Default is true.</td> + </tr> + <tr> + <td>moduleWarnings</td> + <td>Whether to emit warnings when resolving modules which are + not recommended for use. Comma-separated list of one of more of + the following: + <dl> + <dt><code>deprecated</code></dt> + <dd>Warn if module is deprecated</dd> + <dt><code>leaving</code></dt> + <dd>Warn if module is deprecated for removal</dd> + <dt><code>incubating</code></dt> + <dd>Warn if module is an incubating (not yet official) module</dd> + </dl> + </td> + <td>No, default is no warnings.</td> + </tr> +</table> + +<h3>Parameters specified as nested elements</h3> +<h4>classpath, modulepath, commandpath, headerpath, configpath, legalpath, nativelibpath, manpath</h4> +<p>The + <code>classpath</code>, + <code>modulepath</code>, + <code>commandpath</code>, + <code>headerpath</code>, + <code>configpath</code>, + <code>legalpath</code>, + <code>nativelibpath</code>, and + <code>manpath</code> + attributes are <a href="../using.html#path">path-like structures</a> + and can also be set via nested + <code><classpath></code>, + <code><modulepath></code>, + <code><commandpath></code>, + <code><headerpath></code>, + <code><configpath></code>, + <code><legalpath></code>, + <code><nativelibpath></code>, and + <code><manpath></code> + elements, respectively.</p> + +<h4>version</h4> +<p>Fine-grained alternative to the <code>version</code> attribute. This +nested element has these attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>number</td> + <td>Primary version number. Can be any text, as long as it does not + contain a hyphen (<code>-</code>) or plus (<code>+</code>).</td> + <td>Yes</td> + </tr> + <tr> + <td>preRelease</td> + <td>Pre-release version. Can be any text, as long as it does not + contain a plus (<code>+</code>).</td> + <td>No</td> + </tr> + <tr> + <td>build</td> + <td>Build version. Can be any text. + <td>No</td> + </tr> +</table> + +<p>See the <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/module/ModuleDescriptor.Version.html">ModuleDescriptor.Version documentation</a> +for a full description of the meaning of each version component.</p> + +<h4>moduleWarning</h4> +<p>Like the <code>moduleWarnings</code> attribute, but only specifies a single +basis for emitting warnings. This child element may appear multiple times, +to specify multiple conditions under which warnings should be emitted by the +jmod tool.</p> + +<p>Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>reason</td> + <td>Condition which will cause jmod tool to emit warnings. One of: + <dl> + <dt><code>deprecated</code></dt> + <dd>Warn if module is deprecated</dd> + <dt><code>leaving</code></dt> + <dd>Warn if module is deprecated for removal</dd> + <dt><code>incubating</code></dt> + <dd>Warn if module is an incubating (not yet official) module</dd> + </dl> + <td>Yes</td> + </tr> +</table> + +<h3>Examples</h3> + +<h4>Basic jmod</h4> +<p>Create a jmod from a single modular jar file:</p> +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/> +</pre> + +<h4>With dependencies</h4> +<p>Create a jmod from a modular jar file which depends on another module:</p> +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"> + <modulepath> + <pathelement location="libs/thirdpartyutils.jar"/> + </modulepath> +</jmod> +</pre> + +<h4>With version</h4> +<p>Create a jmod with a module version:</p> +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar" + version="1.2.1-ea+29"/> +</pre> + +<p>Create a versioned jmod from module version components:</p> +<pre> +<property name="version" value="1.2.1"/> +<buildnumber/> +<loadfile property="buildnum" srcFile="build.number"/> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"> + <version number="${version}" build="${buildnum}"/> +</jmod> +</pre> + +<h4>Main class</h4> +<p>Create a jmod with a main class:</p> +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar" + mainclass="com.example.myapp.MainWindow"/> +</pre> + +<h4>Target platform</h4> +<p>Create a jmod for a specific platform, possibly different from the +current platform:</p> + +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar" + platform="windows-amd64"/> +</pre> + +</body> +</html> Propchange: ant/site/ant/production/manual/Tasks/jmod.html ------------------------------------------------------------------------------ svn:eol-style = native Added: ant/site/ant/production/manual/Tasks/link.html URL: http://svn.apache.org/viewvc/ant/site/ant/production/manual/Tasks/link.html?rev=1859109&view=auto ============================================================================== --- ant/site/ant/production/manual/Tasks/link.html (added) +++ ant/site/ant/production/manual/Tasks/link.html Sat May 11 11:38:01 2019 @@ -0,0 +1,580 @@ +<!DOCTYPE html> +<!-- + 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. +--> +<html lang="en"> + +<head> +<link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> +<title>Link Task</title> +</head> + +<body> + +<h2 id="link">Link</h2> +<p><em>Since Apache Ant 1.10.6</em></p> + +<h3>Description</h3> +<p>Assembles jmod files into an executable image. Equivalent to the JDK's +<a href="https://docs.oracle.com/en/java/javase/11/tools/jlink.html">jlink</a> +tool. +</p> +<p>Requires Java 9 or later.</p> + +<h3>Parameters</h3> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>destDir</td> + <td>Root directory of created image.</td> + <td>Yes</td> + </tr> + <tr> + <td>modulepath</td> + <td>Path-like sequence of jmod files to link in order to create image.</td> + <td rowspan="2">One of these is required, unless a nested + <code><modulepath></code> is present.</td> + </tr> + <tr> + <td>modulepathref</td> + <td class="left">Path-like sequence of jmod files to link in order to + create image, given as a <a href="../using.html#references">reference</a> + to a path defined elsewhere.</td> + </tr> + <tr> + <td>modules</td> + <td>Comma-separated list of modules to place in the linked image.</td> + <td>Yes, unless one or more nested <code><module></code> elements + are present.</td> + </tr> + <tr> + <td>observableModules</td> + <td>Comma-separated list of explicit modules that comprise + "universe" visible to link tool while linking.</td> + <td>No</td> + </tr> + <tr> + <td>launchers</td> + <td>Comma-separated list of commands, each of the form + <var>name</var><code>=</code><var>module</var> or + <var>name</var><code>=</code><var>module</var><code>/</code><var>mainclass</var></td> + <td>No</td> + </tr> + <tr> + <td>locales</td> + <td>Comma-separated list of extra locales, or wildcard patterns matching + multiple locale names, to include. + Requires <code>jdk.localedata</code> module.</td> + <td>No</td> + </tr> + <tr> + <td>excludeResources</td> + <td>Comma-separated list of patterns specifying resources to exclude + from source jmods. Each is either a + <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard PathMatcher pattern</a> + or <code>@</code><var>filename</var>, indicating a text file with + one resource name per line.</td> + <td>No</td> + </tr> + <tr> + <td>excludeFiles</td> + <td>Comma-separated list of patterns specifying files to exclude + from linked image. Each is either a + <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard PathMatcher pattern</a> + or <code>@</code><var>filename</var>, indicating a text file with + one file name per line.</td> + <td>No</td> + </tr> + <tr> + <td>resourceOrder</td> + <td>Comma-separated list of patterns specifying resource search order. + Each is either a + <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard PathMatcher pattern</a> + or <code>@</code><var>filename</var>, indicating a text file with + one resource name per line.</td> + <td>No</td> + </tr> + <tr> + <td>bindServices</td> + <td>Boolean, whether to include in linked image any service providers + found in module path corresponding to service provider interfaces + used by explicitly linked modules.</td> + <td>No, default is false</td> + </tr> + <tr> + <td>ignoreSigning</td> + <td>Boolean, whether to allow signed jar files. + (Note: As of Java 11, this is ignored and is always treated as true.)</td> + <td>No, default is false</td> + </tr> + <tr> + <td>includeHeaders</td> + <td>Boolean, whether to include header files in linked image.</td> + <td>No, default is true</td> + </tr> + <tr> + <td>includeManPages</td> + <td>Boolean, whether to include man pages in linked image.</td> + <td>No, default is true</td> + </tr> + <tr> + <td>includeNativeCommands</td> + <td>Boolean, whether to include native executables in linked image.</td> + <td>No, default is true</td> + </tr> + <tr> + <td>debug</td> + <td>Boolean, whether to include debug information.</td> + <td>No, default is true</td> + </tr> + <tr> + <td>verboseLevel</td> + <td>If set, the linker will produce verbose output, which will be logged at + the specified Ant log level (<code>DEBUG</code>, <code>VERBOSE</code>, + <code>INFO</code>, <code>WARN</code>, or <code>ERR</code>).</td> + <td>No, default is no verbose output</td> + </tr> + <tr> + <td>compress</td> + <td>Compression level of linked image. One of: + <dl> + <dt><code>0</code> or + <code>none</code></dt> + <dd>no compression (default)</dd> + <dt><code>1</code> or + <code>strings</code></dt> + <dd>constant string sharing</dd> + <dt><code>2</code> or + <code>zip</code></dt> + <dd>zip compression</dd> + </dl> + </td> + <td>No, default is no compression</td> + </tr> + <tr> + <td>endianness</td> + <td>Byte order of linked image, must be <code>little</code> or <code>big</code> + <td>No, default is native byte order</td> + </tr> + <tr> + <td>checkDuplicateLegal</td> + <td>Boolean. When merging legal notices from different modules + because they have the same name, verify that their contents + are identical.</td> + <td>No, default is false, which means any license files + with the same name are assumed to have the same content, and no + checking is done.</td> + </tr> + <tr> + <td>vmType</td> + <td>Hotspot VM in image. One of: + <ul> + <li><code>client</code> + <li><code>server</code> + <li><code>minimal</code> + <li><code>all</code> + </ul> + </td> + <td>No, default is <code>all</code></td> + </tr> +</table> + +<h3>Parameters specified as nested elements</h3> + +<p><code><link></code> can have the following nested elements:</p> +<ul> +<li><a href="#nested-modulepath">modulepath</a></li> +<li><a href="#nested-module">module</a></li> +<li><a href="#nested-observableModule">observableModule</a></li> +<li><a href="#nested-launcher">launcher</a></li> +<li><a href="#nested-locale">locale</a></li> +<li><a href="#nested-resourceOrder">resourceOrder</a></li> +<li><a href="#nested-excludeResources">excludeResources</a></li> +<li><a href="#nested-excludeFiles">excludeFiles</a></li> +<li><a href="#nested-compress">compress</a></li> +<li><a href="#nested-releaseInfo">releaseInfo</a></li> +</ul> + +<h4 id="nested-modulepath">modulepath</h4> +<p><a href="../using.html#path">Path-like structure</a> pointing to + jmod files to link into image.</p> + +<h4 id="nested-module">module</h4> +<p>Names a single module to be placed in the linked image. This may be +specified multiple times.</p> +<p>Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>name</td> + <td>Name of module to add.</td> + <td>Yes</td> + </tr> +</table> + +<h4 id="nested-observableModule">observableModule</h4> +<p>Names a module visible to the linking process, instead of every module +in the module path being considered. This may be specified multiple times. +<p>Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>name</td> + <td>Name of module to add to list of observable modules.</td> + <td>Yes</td> + </tr> +</table> + +<h4 id="nested-launcher">launcher</h4> +<p>Specifies an executable file which will be added to the linked image, +which executes a particular module's main class. Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>name</td> + <td>Name of launcher. This typically is used for the name of the + executable file.</td> + <td>Yes</td> + </tr> + <tr> + <td>module</td> + <td>Name of module to execute.</td> + <td>Yes</td> + </tr> + <tr> + <td>mainClass</td> + <td>Name of entry point class in module to execute.</td> + <td>Required unless module has its own main class defined.</td> + </tr> +</table> + +<h4 id="nested-locale">locale</h4> +<p>Specifies locales to include in linked image. May be specified multiple +times. Requires <code>jdk.localedata</code> module. Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>name</td> + <td>Name of locale, or wildcard pattern with <q><code>*</code></q> + that matches multiple locale names.</td> + <td>Yes</td> + </tr> +</table> + +<h4 id="nested-resourceOrder">resourceOrder</h4> +<p>Explicit resource search order in linked image. May be specified multiple +times. Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>pattern</td> + <td>A <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard PathMatcher pattern</a> + for matching resources</td> + <td rowspan="2">Exactly one of these</td> + </tr> + <tr> + <td>listFile</td> + <td class="left">Text file containing list of resource names (not patterns), + one per line</td> + </tr> +</table> + +<p>If the <code>resourceOrder</code> attribute is also present on the task, its +patterns are treated as if they occur before patterns in nested +<code><resourceOrder></code> elements.</p> + +<h4 id="nested-excludeResources">excludeResources</h4> +<p>Excludes files from linked image tree. May be specified multiple times. + Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>pattern</td> + <td>A <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard PathMatcher pattern</a> + for matching resources</td> + <td rowspan="2">Exactly one of these</td> + </tr> + <tr> + <td>listFile</td> + <td class="left">Text file containing list of resource names (not patterns), + one per line</td> + </tr> +</table> + +<h4 id="nested-excludeFiles">excludeFiles</h4> +<p>Excludes files from linked image. May be specified multiple times. + Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>pattern</td> + <td>A <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard PathMatcher pattern</a> + for matching files</td> + <td rowspan="2">Exactly one of these</td> + </tr> + <tr> + <td>listFile</td> + <td class="left">Text file containing list of file names (not patterns), + one per line</td> + </tr> +</table> + +<h4 id="nested-compress">compress</h4> +<p>Describes how image should be compressed. Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>level</td> + <td>Compression level of linked image. One of: + <dl> + <dt><code>0</code> or + <code>none</code></dt> + <dd>no compression (default)</dd> + <dt><code>1</code> or + <code>strings</code></dt> + <dd>constant string sharing</dd> + <dt><code>2</code> or + <code>zip</code></dt> + <dd>zip compression</dd> + </dl> + </td> + <td>Yes</td> + </tr> + <tr> + <td>files</td> + <td>Comma-separated list of patterns matching files to compress. + Each pattern either a + <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard PathMatcher pattern</a> + or <code>@</code><var>filename</var>, indicating a text file with + one file name per line.</td> + <td>No</td> + </tr> +</table> + +<p><code><compress></code> can also have any number of nested +<code><files></code> elements, with these attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>pattern</td> + <td>A <a href="https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/FileSystem.html#getPathMatcher%28java.lang.String%29">standard PathMatcher pattern</a> + for matching files</td> + <td rowspan="2">Exactly one of these</td> + </tr> + <tr> + <td>listFile</td> + <td class="left">Text file containing list of file names (not patterns), + one per line</td> + </tr> +</table> + +<h4 id="nested-releaseInfo">releaseInfo</h4> +<p>Replaces, augments, or trims the image's release info properties. +Can be specified multiple times. Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>file</td> + <td>Java properties file containing new release info properties + that will entirely replace the current ones.</td> + <td>No</td> + </tr> + <tr> + <td>delete</td> + <td>Comma-separated property keys to remove from application's + release info + <td>No</td> + </tr> +</table> + +<p><code><releaseInfo></code> can also have any number of these nested elements:</p> +<h5>add</h5> +<p>Specifies additional release info properties. Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>key</td> + <td>Key of single property to add.</td> + <td rowspan="2">Yes, unless <code>file</code> is specified</td> + </tr> + <tr> + <td>value</td> + <td class="left">Value of single property to add.</td> + </tr> + <tr> + <td>file</td> + <td>Java property file containing any number of properties to add.</td> + <td>Yes, unless <code>key</code> and <code>value</code> are specified</td> + </tr> + <tr> + <td>charset</td> + <td>Character set of property file.</td> + <td>No, default is <code>ISO_8859_1</code>, in accordance with + java.util.Properties class.</td> + </tr> +</table> + +<h5>delete</h5> +<p>Property keys to remove from applicaiton's release info. Attributes:</p> +<table class="attr"> + <tr> + <th scope="col">Attribute</th> + <th scope="col">Description</th> + <th scope="col">Required</th> + </tr> + <tr> + <td>key</td> + <td>Key of property to remove.</td> + <td>Yes</td> + </tr> +</table> + +<h3>Examples</h3> +<h4>Basic linking</h4> +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/> +<link destDir="build/image" modulepath="MyApp.jmod" + modules="com.example.myapp"/> +</pre> + +<h4>Custom binaries</h4> +<p>This will cause a <samp>bin/MyEditor</samp> script to appear in the +image: +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/> +<link destDir="build/image" modulepath="MyApp.jmod" + modules="com.example.myapp" + launchers="MyEditor=com.example.myapp/com.example.myapp.editors.EditorMain"/> +</pre> + +<p>Same thing, using a nested launcher element:</p> +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/> +<link destDir="build/image" modulepath="MyApp.jmod" + modules="com.example.myapp"> + + <launcher name="MyEditor" module="com.example.myapp" + mainClass="com.example.myapp.editors.EditorMain"/> + +</link> +</pre> + +<h4>Limiting locales</h4> +<p>Include just the locales needed by the application from the <a href="https://docs.oracle.com/en/java/javase/11/docs/api/jdk.localedata/module-summary.html">jdk.localedata</a> module:</p> +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/> +<link destDir="build/image" modulepath="MyApp.jmod" + modules="com.example.myapp,jdk.localedata" + locales="zh,jp-*"/> +</pre> + +<h4>Compressed image</h4> +<p>Compress entire image:</p> +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/> +<link destDir="build/image" modulepath="MyApp.jmod" + modules="com.example.myapp,jdk.localedata" + compress="zip"/> +</pre> + +<p>Compress only some files in the image:</p> +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar"/> +<link destDir="build/image" modulepath="MyApp.jmod" + modules="com.example.myapp,jdk.localedata"> + + <compress level="zip" files=".*\.xml"/> + +</link> +</pre> + +<h4>Cross-compiling</h4> +<p>To create an image for a different platform: + +<ul> +<li>Download the JDK for that platform, and expand the archive manually into +a directory of your choice. (Downloading a zip or tar.gz version of a JDK +instead of an installer will make this easier.)</li> +<li>Determine the foreign JDK's platform string. This can be done with +a command that examines the JDK's <samp>jmods/java.base.jmod</samp> file: +<pre> +jmod describe "$FOREIGN_JDK_HOME"/jmods/java.base.jmod | grep '^platform' +</pre> +</li> +<li>Create your jmod using the foreign JDK's platform string: +<pre> +<jmod destfile="MyApp.jmod" classpath="build/myapp.jar" platform="windows-amd64"/> +</pre> +</li> +<li>Link with the foreign JDK's <samp>jmods</samp> directory in the module path: +<pre> +<link destDir="build/image" + modulepath="MyApp.jmod;${foreign-jdk-home}/jmods" + modules="com.example.myapp"/> +</pre> +</li> +</ul> + +</body> +</html> Propchange: ant/site/ant/production/manual/Tasks/link.html ------------------------------------------------------------------------------ svn:eol-style = native