blob: 04d646d32512d9838f160f5eb73efd11e2b90607 [file] [log] [blame]
<!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>
<title>Apache Velocity Engine - Upgrading</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta property="og:image" content="https://www.apache.org/images/asf_logo.gif" />
<link rel="stylesheet" type="text/css" href="/css/site.css">
</head>
<body>
<div id="page">
<div id="header">
<div id="logo2"><img src="/engine/devel/images/velocity-logo.png"/></div>
<a href="/">
<svg height="60" width="50%" viewBox="20 20 800 110" preserveAspectRatio="xMinYMin">
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1395.619" x2="-4570.1162" y1="697.55487" x1="-5167.0962" gradientUnits="userSpaceOnUse" id="SVGID_1_">
<stop id="stop3521" style="stop-color:#F69923" offset="0" />
<stop id="stop3523" style="stop-color:#F79A23" offset="0.3123" />
<stop id="stop3525" style="stop-color:#E97826" offset="0.8383" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="620.50482" x2="-5326.209" y1="620.50482" x1="-9585.3418" gradientUnits="userSpaceOnUse" id="SVGID_2_">
<stop id="stop3546" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3548" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3550" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3552" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1047.6898" x2="-6533.1782" y1="1047.6898" x1="-9071.207" gradientUnits="userSpaceOnUse" id="SVGID_3_">
<stop id="stop3557" style="stop-color:#282662" offset="0" />
<stop id="stop3559" style="stop-color:#662E8D" offset="9.548390e-02" />
<stop id="stop3561" style="stop-color:#9F2064" 1 offset="0.7882" />
<stop id="stop3563" style="stop-color:#CD2032" offset="0.9487" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="580.81702" x2="-5086.9941" y1="580.81702" x1="-9346.126" gradientUnits="userSpaceOnUse" id="SVGID_4_">
<stop id="stop3568" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3570" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3572" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3574" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="638.4408" x2="-6797.2012" y1="638.4408" x1="-9035.5029" gradientUnits="userSpaceOnUse" id="SVGID_5_">
<stop id="stop3579" style="stop-color:#282662" offset="0" />
<stop id="stop3581" style="stop-color:#662E8D" offset="9.548390e-02" />
<stop id="stop3583" style="stop-color:#9F2064" offset="0.7882" />
<stop id="stop3585" style="stop-color:#CD2032" offset="0.9487" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1021.6218" x2="-5086.9941" y1="1021.6218" x1="-9346.126" gradientUnits="userSpaceOnUse" id="SVGID_6_">
<stop id="stop3590" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3592" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3594" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3596" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="999.73297" x2="-5351.2017" y1="999.73297" x1="-9610.334" gradientUnits="userSpaceOnUse" id="SVGID_7_">
<stop id="stop3601" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3603" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3605" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3607" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1152.7261" x2="-5086.9941" y1="1152.7261" x1="-9346.126" gradientUnits="userSpaceOnUse" id="SVGID_8_">
<stop id="stop3616" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3618" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3620" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3622" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1137.7247" x2="-5086.9941" y1="1137.7247" x1="-9346.126" gradientUnits="userSpaceOnUse" id="SVGID_9_">
<stop id="stop3631" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3633" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3635" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3637" style="stop-color:#E97826" offset="1" />
</linearGradient>
<linearGradient gradientTransform="matrix(0.07810935,0.01915457,0.02093045,-0.07148201,452.38809,497.7395)" y2="1134.7161" x2="-6011.9995" y1="1134.7161" x1="-6953.4072" gradientUnits="userSpaceOnUse" id="SVGID_10_">
<stop id="stop3646" style="stop-color:#9E2064" offset="0.3233" />
<stop id="stop3648" style="stop-color:#C92037" offset="0.6302" />
<stop id="stop3650" style="stop-color:#CD2335" offset="0.7514" />
<stop id="stop3652" style="stop-color:#E97826" offset="1" />
</linearGradient>
<g transform="translate(275,-230)" id="g3735">
<path d="m 95.030525,353.34688 c -5.868388,1.89866 -18.455097,2.86966 -35.232972,2.68962 l -7.844759,-17.69411 c 11.922072,0.96277 23.155947,1.27149 33.446456,0.7785 0.806681,-0.0278 1.205437,-0.0597 1.205437,-0.0597 -0.39975,0.0215 -0.805689,0.0382 -1.205437,0.0597 -3.380984,0.11837 -13.97859,0.22097 -32.909158,-1.88263 6.824373,-6.72909 18.288583,-16.31958 28.008861,-23.85834 18.433387,9.69185 21.017957,20.51606 21.017957,20.51606 0,0 5.61321,15.54576 -6.486385,19.4509 z" id="path3527" style="fill:url(#SVGID_1_)" />
<path d="m 3.8322454,303.07135 c 0.059217,-0.0415 0.1120778,-0.0878 0.1712971,-0.12929 l -1.0221478,0.89604 c -0.088131,0.0386 -0.1658908,0.0658 -0.2478563,0.10915 0.3676459,-0.29732 0.7362578,-0.58424 1.098707,-0.8759 z" id="path3529" style="fill:none" />
<path d="m -27.876072,290.63399 c -0.650899,0.45658 -1.281214,0.94828 -1.904317,1.45519 0.623103,-0.50691 1.259608,-0.99386 1.904317,-1.45519 z" id="path3531" style="fill:none" />
<path d="m -128.18492,294.56272 c 0.27819,0.088 0.55639,0.17608 0.82938,0.26978 5.73136,1.8314 11.32321,3.58465 16.79937,5.26839 6.14427,1.88764 12.119072,3.68379 17.941982,5.39228 6.136306,1.80423 12.096924,3.5122 17.888098,5.1287 6.074555,1.69886 11.961044,3.29193 17.65531,4.79537 4.634037,1.22062 9.141965,2.38304 13.528979,3.48159 1.458542,0.36649 2.910894,0.72823 4.350865,1.08046 2.85092,0.70149 5.659501,1.38013 8.402938,2.03773 2.537553,0.60576 5.026574,1.18393 7.479394,1.74394 0.816212,0.19205 1.625242,0.36892 2.435266,0.55621 0.129295,0.0317 0.263817,0.0577 0.393113,0.0893 l -0.868431,0.76291 0.823816,1.77257 c -0.199639,-0.047 -0.398312,-0.0837 -0.603148,-0.12504 -3.709945,-0.80082 -7.434286,-1.63202 -11.17299,-2.49357 -2.160061,-0.49944 -4.326285,-1.00361 -6.493528,-1.51823 -6.008289,-1.42577 -12.02773,-2.90842 -18.046963,-4.44886 -6.083384,-1.55106 -12.155172,-3.16085 -18.201961,-4.8094 -5.94027,-1.61506 -11.850346,-3.27456 -17.722022,-4.95287 -5.860317,-1.67925 -11.671838,-3.38866 -17.421218,-5.10831 -6.00377,-1.79907 -11.9226,-3.61019 -17.74509,-5.43429 -1.31344,-0.40964 -2.62686,-0.81925 -3.9351,-1.23456 -4.69313,-1.47853 -9.30551,-2.95301 -13.84851,-4.42253 l -1.30665,-2.80027 0.97437,-0.85544 c 0.1365,0.0469 0.27298,0.0937 0.4033,0.1358 5.95137,1.97137 11.76945,3.86936 17.45943,5.68831 z" id="path3533" style="fill:none" />
<path d="m -30.254972,292.46861 0,0 c 0.0052,-0.006 0.01127,-0.001 0.01647,-0.007 0,0 -0.0052,0.006 -0.01647,0.007 z" id="path3535" style="fill:none" />
<path d="m -44.667842,285.26517 c -0.973928,0.73986 -1.967656,1.51281 -2.988395,2.30367 -0.0052,0.006 -0.01647,0.007 -0.02166,0.0123 0.500572,-0.40778 0.995948,-0.80989 1.498505,-1.19683 0.50256,-0.38694 1.00094,-0.75776 1.511673,-1.1191 z" id="path3537" style="fill:#be202e" />
<path d="m -44.667842,285.26517 c -0.973928,0.73986 -1.967656,1.51281 -2.988395,2.30367 -0.0052,0.006 -0.01647,0.007 -0.02166,0.0123 0.500572,-0.40778 0.995948,-0.80989 1.498505,-1.19683 0.50256,-0.38694 1.00094,-0.75776 1.511673,-1.1191 z" id="path3539" style="opacity:0.35;fill:#be202e" />
<path d="m -30.2218,292.45544 c 0,0 -0.0052,0.006 -0.01127,10e-4 -0.0052,0.006 -0.01127,9.9e-4 -0.01647,0.007 0.153662,-0.13318 0.314646,-0.25108 0.463195,-0.37852 0.628302,-0.51257 1.264807,-0.99953 1.904289,-1.45521 -0.763241,0.60216 -1.549259,1.20616 -2.339509,1.82623 l 0,0 0,0 z" id="path3541" style="fill:#be202e" />
<path d="m -30.2218,292.45544 c 0,0 -0.0052,0.006 -0.01127,10e-4 -0.0052,0.006 -0.01127,9.9e-4 -0.01647,0.007 0.153662,-0.13318 0.314646,-0.25108 0.463195,-0.37852 0.628302,-0.51257 1.264807,-0.99953 1.904289,-1.45521 -0.763241,0.60216 -1.549259,1.20616 -2.339509,1.82623 l 0,0 0,0 z" id="path3543" style="opacity:0.35;fill:#be202e" />
<path d="m -3.0502818,330.5069 c 6.1572269,1.1827 12.247534,2.26571 18.2471238,3.24041 6.227231,1.01426 12.356561,1.90504 18.357978,2.65895 0.348762,0.0456 0.708911,0.0903 1.063863,0.1407 5.913525,0.73472 11.699134,1.33257 17.339307,1.78976 l 7.844762,17.69411 c -1.160612,-0.0121 -2.333632,-0.0338 -3.529455,-0.0536 -4.497401,-0.0917 -9.271992,-0.26093 -14.266831,-0.51239 -5.629411,-0.28469 -11.556567,-0.6821 -17.699796,-1.1778 -5.67533,-0.46487 -11.549098,-1.02415 -17.5529729,-1.68334 -5.1106845,-0.5626 -10.3308648,-1.18997 -15.622198,-1.90096 -0.197654,-0.0262 -0.3953057,-0.0524 -0.5929873,-0.0786 L -20.52484,326.94198 c 5.866009,1.25856 11.69707,2.45163 17.4745582,3.56492 z" id="path3554" style="fill:url(#SVGID_2_)" />
<path d="m -148.64432,287.87492 c -4.62455,-1.5418 -9.31626,-3.12551 -14.09367,-4.76537 -0.0714,-0.0258 -0.13651,-0.0469 -0.20787,-0.0727 -0.67629,-0.2295 -1.34737,-0.46467 -2.02369,-0.69419 -3.21697,-1.10818 -6.09263,-2.12815 -12.63913,-4.44059 1.0996,-3.6285 -0.41103,-8.38228 -2.49019,-13.37944 3.85283,3.31605 6.24773,7.77315 6.52364,12.94094 11.22895,-13.43253 25.02773,-21.83891 40.65304,-19.66506 1.39603,0.1929 2.79384,0.46445 4.21819,0.83367 -6.03156,-0.16844 -10.5525,1.89547 -15.78323,8.30262 -0.0165,0.007 -0.0384,0.0188 -0.0549,0.0255 0.0165,-0.007 0.0384,-0.0188 0.0549,-0.0255 12.65883,-5.62036 21.02643,-6.89439 31.69203,-5.50534 2.52825,0.32813 5.18536,0.80351 8.06151,1.40845 -16.05366,1.09099 -26.93227,8.28126 -33.83488,19.35554 l -7.46769,6.54422 c -0.87076,-0.28223 -1.73631,-0.57012 -2.60806,-0.86277 z" id="path3565" style="fill:url(#SVGID_3_)" />
<path d="m -127.92557,298.05617 c 5.82769,1.81842 11.74652,3.62955 17.74512,5.43431 5.74415,1.7253 11.554681,3.42428 17.421188,5.10828 5.866507,1.68401 11.775562,3.33306 17.722022,4.95287 6.046789,1.64856 12.123776,3.25267 18.201961,4.8094 6.013043,1.53569 12.038702,3.02311 18.046963,4.44886 2.167243,0.51462 4.333467,1.0188 6.493528,1.51824 3.738705,0.86155 7.463045,1.69274 11.172991,2.49357 0.199636,0.047 0.398312,0.0837 0.603147,0.12503 l 11.0633797,23.68219 c -0.3953333,-0.0524 -0.7854697,-0.11047 -1.1807777,-0.16285 -5.606921,-0.76978 -11.295338,-1.6118 -17.027898,-2.55534 -5.790549,-0.94943 -11.619023,-1.99561 -17.461681,-3.12996 -4.930086,-0.95526 -9.854792,-1.97402 -14.768868,-3.06189 -0.99728,-0.22482 -1.97698,-0.44581 -2.962873,-0.67154 -6.150175,-1.40914 -11.974938,-2.89686 -17.487932,-4.42532 -6.244233,-1.73255 -12.086525,-3.52355 -17.517683,-5.33696 -3.574927,-1.18983 -6.978977,-2.39336 -10.215327,-3.58405 -2.73994,-1.04133 -5.46008,-2.11577 -8.13662,-3.21469 -6.31977,-2.58273 -12.45563,-5.34303 -18.38577,-8.29314 l -11.10848,-23.79411 c 4.54303,1.46954 9.15538,2.94401 13.84853,4.42255 1.30203,0.41054 2.62167,0.82493 3.93508,1.23455 z" id="path3576" style="fill:url(#SVGID_4_)" />
<path d="m -135.39748,315.78421 c -7.2115,-3.62494 -14.10198,-7.55402 -20.5914,-11.85137 -0.2272,-0.15514 -0.45863,-0.29422 -0.68582,-0.44936 2.3312,6.55285 0.24599,17.70369 0.21823,17.65338 -3.57467,-11.87432 -8.27251,-22.40852 -15.98628,-29.36565 -3.27442,2.37386 -5.94744,7.01608 -8.28358,12.96033 -0.41103,-8.38228 1.53485,-12.94527 2.45003,-14.5997 -4.28418,4.11989 -11.70198,6.14259 -19.64656,7.81875 9.09151,-4.3892 15.21177,-8.8767 17.7976,-13.46995 -24.55723,-8.42409 -51.09999,-18.3439 -78.93127,-29.25317 2.33282,-1.41596 4.74343,-1.47765 7.19121,-0.67033 5.0236,1.99314 38.05928,14.98608 83.16344,30.23283 1.28124,0.43321 2.57389,0.86552 3.8727,1.30257 0.36193,0.12335 0.72908,0.24106 1.08481,0.35966 4.73826,1.59047 9.59244,3.19267 14.55737,4.81229 1.13136,0.36642 2.26272,0.73284 3.40026,1.10401 0.0237,0.009 0.0476,0.0172 0.0652,0.021 l 11.11272,23.77804 c -0.25321,-0.12682 -0.52301,-0.24705 -0.7886,-0.38338 z" id="path3587" style="fill:url(#SVGID_5_)" />
<path d="m -20.879529,324.31241 c -0.803833,-0.18253 -1.613855,-0.36983 -2.435266,-0.5562 -2.447621,-0.56569 -4.936644,-1.14385 -7.479421,-1.74397 -2.748608,-0.6519 -5.5458,-1.33146 -8.402911,-2.03771 -1.439971,-0.35222 -2.880933,-0.71488 -4.350864,-1.08045 -4.387015,-1.09855 -8.894942,-2.26097 -13.528979,-3.48159 -5.694267,-1.50344 -11.580756,-3.09652 -17.65531,-4.79538 -5.791175,-1.61649 -11.75182,-3.32448 -17.888098,-5.1287 -5.82291,-1.70849 -11.803902,-3.50939 -17.941982,-5.39227 -5.47616,-1.68374 -11.06801,-3.43699 -16.79937,-5.26839 -0.27821,-0.088 -0.55639,-0.17608 -0.82938,-0.26978 -5.68998,-1.81895 -11.50806,-3.71694 -17.44804,-5.68923 -0.13651,-0.0469 -0.27299,-0.0937 -0.40331,-0.1358 l 7.4677,-6.54423 c -0.099,0.16552 -0.21555,0.32718 -0.31452,0.4927 9.07173,-7.71799 26.60886,-13.7657 42.082402,-14.50031 7.130974,-0.33982 14.689435,0.18964 22.840099,1.56994 6.067741,1.02703 12.461933,2.52695 19.257152,4.49905 5.938834,1.72022 12.180797,3.78914 18.773426,6.22395 -2.953943,1.10323 -5.869407,2.7287 -8.744022,4.78162 -0.499373,0.3604 -1.009112,0.73216 -1.511672,1.1191 -0.502585,0.38691 -1.004151,0.78427 -1.498505,1.19683 l 0,0 0,0 c 0.0052,-0.006 0.01647,-0.007 0.02166,-0.0123 10.741665,-5.44059 21.911677,-5.49972 33.275347,-3.05294 -3.512293,0.90633 -8.725108,2.75774 -13.490013,6.1124 -0.650869,0.45659 -1.281184,0.9483 -1.904287,1.4552 -0.160021,0.1283 -0.314677,0.25106 -0.463195,0.37852 l 0,0 0,0 c 0.0052,-0.006 0.01127,-9.9e-4 0.01647,-0.007 0,0 0.0052,-0.006 0.01127,-9.9e-4 l 0,0 c 3.833524,-1.80927 7.415482,-3.06785 10.971709,-3.81484 0.75953,-0.16062 1.521076,-0.30038 2.285595,-0.40887 1.160272,-0.17169 2.320337,-0.28559 3.490588,-0.35301 0.747698,-0.0441 1.497407,-0.0674 2.255322,-0.065 1.7736055,-1.9e-4 3.5809872,0.11249 5.4459147,0.34666 0.5691898,0.07 1.1394009,0.1504 1.7219926,0.24033 0.8080111,0.16642 1.5932437,0.33468 2.3670894,0.50385 3.4947139,0.7708 6.5151055,1.56378 9.1028098,2.33365 1.2938545,0.38493 2.4717831,0.75813 3.5461715,1.12911 0.427069,0.1444 0.842778,0.28973 1.24088,0.4312 1.189109,0.43009 2.22612,0.83033 3.11722,1.20547 1.333581,0.56035 2.345383,1.05716 3.054216,1.4469 l 0,0 0,0 c -0.484902,0.0914 -1.006187,0.22239 -1.55767,0.39787 -3.810562,1.20862 -9.0630554,4.26613 -12.8155016,7.10372 l 6.8589836,-6.00695 -6.8589836,6.00695 c -0.059219,0.0415 -0.1120802,0.0878 -0.1712972,0.1293 -0.3686395,0.2869 -0.73626,0.58424 -1.1100962,0.87681 0.088156,-0.0386 0.1659184,-0.0658 0.2478563,-0.10915 l -23.4688293,20.55321 c -0.123105,-0.0269 -0.246211,-0.0538 -0.380705,-0.0798 z" id="path3598" style="fill:url(#SVGID_6_)" />
<path d="m 52.489098,337.22784 c -5.221409,-0.58001 -11.072737,-1.32494 -17.582802,-2.29555 -0.337345,-0.0465 -0.687098,-0.10255 -1.030661,-0.15384 -5.631475,-0.8466 -11.74798,-1.84346 -18.359704,-3.03705 -5.7115598,-1.02402 -11.780866,-2.1875 -18.2388704,-3.51423 -5.6261705,-1.15166 -11.5511356,-2.4265 -17.7644676,-3.83584 L 2.9813947,303.8381 c 9.3594193,-4.04821 15.0606363,-4.69376 22.0219053,-4.22681 1.892116,0.15844 3.845172,0.35401 5.836389,0.58854 6.095793,0.72012 12.552647,1.79478 18.766426,3.08853 5.997499,1.25326 11.744739,2.71043 16.714058,4.25614 3.159483,0.98674 6.000949,2.00943 8.377522,3.03258 2.095388,0.90383 4.020884,1.83177 5.804442,2.7763 -9.724453,7.55488 -21.194854,17.14061 -28.013039,23.87446 z" id="path3609" style="fill:url(#SVGID_7_)" />
<path d="m -46.179514,286.38427 c -0.502558,0.38693 -1.004124,0.78429 -1.498506,1.19682 l 0,0 c 0.494382,-0.41253 0.995948,-0.80989 1.498506,-1.19682 z" id="path3611" style="fill:#be202e" />
<path d="m -46.179514,286.38427 c -0.502558,0.38693 -1.004124,0.78429 -1.498506,1.19682 l 0,0 c 0.494382,-0.41253 0.995948,-0.80989 1.498506,-1.19682 z" id="path3613" style="opacity:0.35;fill:#be202e" />
<path d="m -46.179514,286.38427 c -0.502558,0.38693 -1.004124,0.78429 -1.498506,1.19682 l 0,0 c 0.494382,-0.41253 0.995948,-0.80989 1.498506,-1.19682 z" id="path3624" style="fill:url(#SVGID_8_)" />
<path d="m -30.254972,292.46861 c 0.153663,-0.13318 0.314647,-0.25107 0.463193,-0.37852 -0.148463,0.12751 -0.303257,0.25016 -0.463193,0.37852 l 0,0 z" id="path3626" style="fill:#be202e" />
<path d="m -30.254972,292.46861 c 0.153663,-0.13318 0.314647,-0.25107 0.463193,-0.37852 -0.148463,0.12751 -0.303257,0.25016 -0.463193,0.37852 l 0,0 z" id="path3628" style="opacity:0.35;fill:#be202e" />
<path d="m -30.254972,292.46861 c 0.153663,-0.13318 0.314647,-0.25107 0.463193,-0.37852 -0.148463,0.12751 -0.303257,0.25016 -0.463193,0.37852 l 0,0 z" id="path3639" style="fill:url(#SVGID_9_)" />
<path d="m -30.233189,292.45636 c 0,0 0.0052,-0.006 0.01127,-0.001 l 0,0 0,0 0,0 c 0,0 -0.0052,0.006 -0.01127,0.001 z" id="path3641" style="fill:#be202e" />
<path d="m -30.233189,292.45636 c 0,0 0.0052,-0.006 0.01127,-0.001 l 0,0 0,0 0,0 c 0,0 -0.0052,0.006 -0.01127,0.001 z" id="path3643" style="opacity:0.35;fill:#be202e" />
<path d="m -30.233189,292.45636 c 0,0 0.0052,-0.006 0.01127,-0.001 l 0,0 0,0 0,0 c 0,0 -0.0052,0.006 -0.01127,0.001 z" id="path3654" style="fill:url(#SVGID_10_)" />
</g>
<text id="text3761" y="61.094482" x="290" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:Oswald;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve">
<tspan y="61.094482" x="290" id="tspan3763">The</tspan>
</text>
<text id="text3416" y="72.094482" x="356" style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:57.5px;line-height:125%;font-family:Oswald;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve">
<tspan y="72.094482" x="356" id="tspan3418">Apache Velocity Project</tspan>
</text>
<path id="path3557" d="m 897.15,23.54449 0,1.58889 3.72099,0 0,10.51111 1.72469,0 0,-10.51111 3.74815,0 0,-1.58889 -9.19383,0 z m 21.49753,0 -4.15555,8.44691 -4.18272,-8.44691 -2.07778,0 0,12.1 1.58889,0 0,-9.60123 4.11482,8.32469 1.1,0 4.11481,-8.32469 0,9.60123 1.58889,0 0,-12.1 -2.09136,0 z" style="fill:#6d6e71" />
<text id="text3599" y="114.09448" x="400" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:125%;font-family:Arial;text-align:start;letter-spacing:0.03em;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" xml:space="preserve">
<tspan y="114.09448" x="400" id="tspan3601">http://velocity.apache.org/</tspan>
</text>
</svg>
</a>
</div>
<div id="breadcrumb">
<ul><li><a href="http://www.apache.org">apache</a></li><li><a href="/">velocity</a></li><li><a href="/engine/">engine</a></li><li><a href="/engine/2.3/">2.3</a></li><li><a href="#">upgrading</a></li></ul>
</div>
<div id="middle">
<div id="leftnav">
<style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<h2 id="velocity-engine">Velocity Engine<a class="headerlink" href="#velocity-engine" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="index.html">Welcome</a></li>
<li><a href="overview.html">Overview</a></li>
<li><a href="getting-started.html">Getting Started</a></li>
<li><a href="webapps.html">Web Applications</a></li>
<li><a href="/download.cgi#engine">Downloads</a></li>
<li><a href="http://wiki.apache.org/velocity/VelocityFAQ">FAQ</a></li>
</ul>
<h2 id="docs">Docs<a class="headerlink" href="#docs" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="user-guide.html">User Guide</a></li>
<li><a href="developer-guide.html">Developer Guide</a></li>
<li><a href="vtl-reference.html">VTL Reference</a></li>
<li><a href="configuration.html">Configuration</a></li>
<li><a href="glossary.html">Glossary</a></li>
<li><a href="apidocs/index.html">Javadoc</a></li>
<li><a href="upgrading.html">Upgrading</a></li>
</ul>
<h2 id="developers">Developers<a class="headerlink" href="#developers" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="license.html">License</a></li>
<li><a href="changes.html">Changes</a></li>
<li><a href="dependencies.html">Dependencies</a></li>
<li><a href="source-repository.html">Sources</a></li>
<li><a href="build.html">Building</a></li>
<li><a href="https://issues.apache.org/jira/browse/VELOCITY">Issues</a></li>
<li><a href="https://wiki.apache.org/velocity/RoadMap">Road Map</a></li>
<li><a href="https://wiki.apache.org/velocity/CodeStandards">Coding Standards</a></li>
<li><a href="https://wiki.apache.org/velocity/DocumentationGuidelines">Doc Guidelines</a></li>
</ul>
<h2 id="community">Community<a class="headerlink" href="#community" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="https://wiki.apache.org/velocity/">Wiki</a></li>
<li><a href="/news.html">News</a></li>
<li><a href="https://wiki.apache.org/velocity/PoweredByVelocity">Powered by Velocity</a></li>
<li><a href="https://wiki.apache.org/velocity/VelocityEditors">IDE/Editor Plugins</a></li>
<li><a href="https://wiki.apache.org/velocity/PublishedArticlesAndBooks">Articles and Books</a></li>
<li><a href="/contact.html">Mailing Lists</a></li>
</ul>
<h2 id="translations-outdated">Translations (outdated)<a class="headerlink" href="#translations-outdated" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="translations/user-guide_fi.html">User's Guide (Finnish)</a></li>
<li><a href="translations/user-guide_fr.html">User's Guide (French)</a></li>
<li><a href="translations/user-guide_es.html">User's Guide (Spanish)</a></li>
</ul>
<div id="bottom-nav">
<img src="/images/pbv90x30.png"/>
<div id="rss">
<a class="poweredBy" href="/rss/news.rss" title="Velocity News Feed"><img class="poweredBy" alt="Velocity News Feed" src="/images/feed-icon-24x24.jpg"></a>
</div>
<iframe src="https://www.apache.org/ads/buttonbar.html" style="border-width:0; float: left" frameborder="0" scrolling="no" width="135" height="265"></iframe>
</div>
</div>
<div id="content"><div class="section-content"><style type="text/css">
/* The following code is added by mdx_elementid.py
It was originally lifted from http://subversion.apache.org/style/site.css */
/*
* Hide class="elementid-permalink", except when an enclosing heading
* has the :hover property.
*/
.headerlink, .elementid-permalink {
visibility: hidden;
}
h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
<h2 id="upgrading-contents">Upgrading - Contents<a class="headerlink" href="#upgrading-contents" title="Permanent link">&para;</a></h2>
<div class="toc">
<ul>
<li><a href="#upgrading-contents">Upgrading - Contents</a></li>
<li><a href="#upgrading-from-earlier-versions">Upgrading from earlier versions</a></li>
<li><a href="#upgrading-from-velocity-22-to-velocity-23">Upgrading from Velocity 2.2 to Velocity 2.3</a></li>
<li><a href="#upgrading-from-velocity-21-to-velocity-22">Upgrading from Velocity 2.1 to Velocity 2.2</a><ul>
<li><a href="#behavior-api-changes">Behavior / API Changes</a></li>
<li><a href="#vtl-changes">VTL Changes</a></li>
<li><a href="#dependency-changes">Dependency Changes</a></li>
</ul>
</li>
<li><a href="#upgrading-from-velocity-20-to-velocity-21">Upgrading from Velocity 2.0 to Velocity 2.1</a><ul>
<li><a href="#behavior-api-changes_1">Behavior / API Changes</a></li>
<li><a href="#vtl-changes_1">VTL Changes</a></li>
<li><a href="#dependency-changes_1">Dependency Changes</a></li>
</ul>
</li>
<li><a href="#upgrading-from-velocity-17-to-velocity-20">Upgrading from Velocity 1.7 to Velocity 2.0</a><ul>
<li><a href="#behavior-api-changes_2">Behavior / API Changes</a></li>
<li><a href="#vtl-changes_2">VTL Changes</a></li>
<li><a href="#dependency-changes_2">Dependency Changes</a></li>
</ul>
</li>
<li><a href="#upgrading-from-velocity-16x-to-velocity-17x">Upgrading from Velocity 1.6.x to Velocity 1.7.x</a></li>
<li><a href="#upgrading-from-velocity-15x-to-velocity-16x">Upgrading from Velocity 1.5.x to Velocity 1.6.x</a></li>
<li><a href="#upgrading-from-velocity-14-or-earlier">Upgrading from Velocity 1.4 or earlier</a></li>
</ul>
</div>
<h2 id="upgrading-from-earlier-versions">Upgrading from earlier versions<a class="headerlink" href="#upgrading-from-earlier-versions" title="Permanent link">&para;</a></h2>
<p>Release with the same major number (1.x, 2.x) are intended to be drop-in replacements. However, in most cases the versions of dependency jars must be adjusted because newer versions of Velocity might require updates.</p>
<h2 id="upgrading-from-velocity-22-to-velocity-23">Upgrading from Velocity 2.2 to Velocity 2.3<a class="headerlink" href="#upgrading-from-velocity-22-to-velocity-23" title="Permanent link">&para;</a></h2>
<p>No specific change needed.</p>
<h2 id="upgrading-from-velocity-21-to-velocity-22">Upgrading from Velocity 2.1 to Velocity 2.2<a class="headerlink" href="#upgrading-from-velocity-21-to-velocity-22" title="Permanent link">&para;</a></h2>
<p>For busy people: To maximize backward compatibility of Velocity 2.2 with Velocity 1.x, be sure to include the following lines in your Velocity configuration:</p>
<div class="codehilite"><pre><span class="c"># No automatic conversion of methods arguments</span>
<span class="na">introspector.conversion_handler.class</span> <span class="o">=</span> <span class="s">none</span>
<span class="c"># Use backward compatible space gobbling</span>
<span class="na">parser.space_gobbling</span> <span class="o">=</span> <span class="s">bc</span>
<span class="c"># Have #if($foo) only returns false if $foo is false or null</span>
<span class="na">directive.if.empty_check</span> <span class="o">=</span> <span class="s">false</span>
<span class="c"># Allow &#39;-&#39; in identifiers (since 2.1)</span>
<span class="na">parser.allow_hyphen_in_identifiers</span> <span class="o">=</span> <span class="s">true</span>
<span class="c"># Enable backward compatibility mode for Velocimacros</span>
<span class="na">velocimacro.enable_bc_mode</span> <span class="o">=</span> <span class="s">true</span>
<span class="c"># When using an invalid reference handler, also include quiet references (since 2.2)</span>
<span class="na">event_handler.invalid_references.quiet</span> <span class="o">=</span> <span class="s">true</span>
<span class="c"># When using an invalid reference handler, also include null references (since 2.2)</span>
<span class="na">event_handler.invalid_references.null</span> <span class="o">=</span> <span class="s">true</span>
<span class="c"># When using an invalid reference handler, also include tested references (since 2.2)</span>
<span class="na">event_handler.invalid_references.tested</span> <span class="o">=</span> <span class="s">true</span>
</pre></div>
<p>Also, please note that since version 2.1, Velocity requires Java JDK 1.8+ for bulding and Java JRE 1.8+ at runtime.</p>
<h3 id="behavior-api-changes">Behavior / API Changes<a class="headerlink" href="#behavior-api-changes" title="Permanent link">&para;</a></h3>
<ul>
<li>The references with alternate values like <code>${foo|'foo'}</code> won't trigger any invalid reference event if their alternate value is valid.</li>
<li>New <a href="configuration.html#logging"><code>runtime.log.track_location</code></a> debugging configuration flag (defaults to false). When true, logs VTL stacktrace on errors and populate slf4j template location MDC tags.</li>
<li>New 1.7.x backward compatibility configuration flags for event handlers, see above section.</li>
<li>When active, the conversion handler will automatcally convert BigInteger and BigDecimal values towards/from expected method arguments types, see <a href="developer-guide.html#method-arguments-conversions">method arguments conversion</a>.</li>
</ul>
<h3 id="vtl-changes">VTL Changes<a class="headerlink" href="#vtl-changes" title="Permanent link">&para;</a></h3>
<ul>
<li>The new velocity-custom-parser-example maven module demonstrates <a href="developer-guide.html#customizing-the-vtl-parser">how to buid a custom VTL parser</a> which uses alternatives to the following four VTL syntax characters: <code>$</code>, <code>#</code>, <code>@</code> and <code>*</code>.</li>
</ul>
<h3 id="dependency-changes">Dependency Changes<a class="headerlink" href="#dependency-changes" title="Permanent link">&para;</a></h3>
<ul>
<li>commons-lang3 has been upgraded to 3.9.</li>
<li>slf4j-api has been upgraded to 1.7.30.</li>
</ul>
<h2 id="upgrading-from-velocity-20-to-velocity-21">Upgrading from Velocity 2.0 to Velocity 2.1<a class="headerlink" href="#upgrading-from-velocity-20-to-velocity-21" title="Permanent link">&para;</a></h2>
<p>For busy people: To maximize backward compatibility of Velocity 2.1 with Velocity 1.x, be sure to include the following lines in your Velocity configuration:</p>
<div class="codehilite"><pre><span class="c"># No automatic conversion of methods arguments</span>
<span class="na">introspector.conversion_handler.class</span> <span class="o">=</span> <span class="s">none</span>
<span class="c"># Use backward compatible space gobbling</span>
<span class="na">parser.space_gobbling</span> <span class="o">=</span> <span class="s">bc</span>
<span class="c"># Have #if($foo) only returns false if $foo is false or null</span>
<span class="na">directive.if.empty_check</span> <span class="o">=</span> <span class="s">false</span>
<span class="c"># Allow &#39;-&#39; in identifiers (since 2.1)</span>
<span class="na">parser.allow_hyphen_in_identifiers</span> <span class="o">=</span> <span class="s">true</span>
<span class="c"># When displaying null arguments literals, use provided arguments literals (since 2.1, but deprecated in 2.2)</span>
<span class="na">velocimacro.arguments.preserve_literals</span> <span class="o">=</span> <span class="s">true</span>
</pre></div>
<p>Also, please note that Velocity 2.1 now requires Java JDK 1.8+ for bulding and Java JRE 1.8+ at runtime.</p>
<h3 id="behavior-api-changes_1">Behavior / API Changes<a class="headerlink" href="#behavior-api-changes_1" title="Permanent link">&para;</a></h3>
<ul>
<li>inside a macro, since 2.0, the rendering of null arguments uses the local reference literal. To revert to the 1.7 behavior, you can set the boolean property <code>velocimacro.preserve.arguments.literals</code> to true. The macros will then use the provided argument literals in such cases.</li>
<li>the <a href="apidocs/org/apache/velocity/util/introspection/ConversionHandler.html"><code>org.apache.util.introspection.ConversionHandler</code></a> interface (introduced in 2.0) has been deprecated in favor of the <a href="apidocs/org/apache/velocity/util/introspection/TypeConversionHandler.html"><code>org.apache.util.introspection.TypeConversionHandler</code></a> interface. The new interface let one specify converters towards a <code>java.lang.reflect.Type</code> rather than a <code>java.lang.class</code>.</li>
<li>most names of Velocity configuration properties have changed ; old names are still functional but will emit a deprecation warning in the log. See the <a href="configuration-property-changes-in-2.1.html">Configuration Changes in Velocity 2.1</a> page.</li>
</ul>
<h3 id="vtl-changes_1">VTL Changes<a class="headerlink" href="#vtl-changes_1" title="Permanent link">&para;</a></h3>
<ul>
<li>since 2.0 the hypen ( <code>-</code> ) cannot be used in variable names anymore, but in 2.1, this behavior can be restored for backward compatibility with 1.7 by setting the new <code>parser.allow_hyphen_in_identifiers</code> boolean property to true</li>
<li>it's now possible to provide default values for references, using the syntax <code>${name|'John Doe'}</code>. The right part can be any valid VTL expression.</li>
<li>the <code>#foreach()</code> directive accepts an <code>#else</code> block which is evaluated when the loop is empty: <code>#foreach(...) ... #else ... #end</code>.</li>
</ul>
<h3 id="dependency-changes_1">Dependency Changes<a class="headerlink" href="#dependency-changes_1" title="Permanent link">&para;</a></h3>
<ul>
<li>Velocity 2.1 now requires JDK 1.8+ for building and JRE 1.8+ at runtime.</li>
<li>commons-lang3 has been upgraded to 3.8.1.</li>
<li>slf4j-api has been upgraded to 1.7.26.</li>
</ul>
<h2 id="upgrading-from-velocity-17-to-velocity-20">Upgrading from Velocity 1.7 to Velocity 2.0<a class="headerlink" href="#upgrading-from-velocity-17-to-velocity-20" title="Permanent link">&para;</a></h2>
<div class="note">
Please note that the maven repository path has changed:
<ul>
<li>former path: <code>org/apache/velocity/velocity/1.7.<i>x</i></code></li>
<li>new path: <code>org/apache/velocity/velocity-engine-core/2.<i>x</i></code></li>
</ul>
</div>
<p>For busy people: To maximize backward compatibility of Velocity 2.0 with Velocity 1.x, be sure to include the following lines in your Velocity configuration:</p>
<div class="codehilite"><pre><span class="c"># No automatic conversion of methods arguments</span>
<span class="na">runtime.conversion.handler.class</span> <span class="o">=</span> <span class="s">none</span>
<span class="c"># Use backward compatible space gobbling</span>
<span class="na">space.gobbling</span> <span class="o">=</span> <span class="s">bc</span>
<span class="c"># Have #if($foo) only returns false if $foo is false or null</span>
<span class="na">directive.if.emptycheck</span> <span class="o">=</span> <span class="s">false</span>
</pre></div>
<p>and check the <a href="#dependencies-changes">Dependency changes</a> below.</p>
<p>Read below for futher details.</p>
<h3 id="behavior-api-changes_2">Behavior / API Changes<a class="headerlink" href="#behavior-api-changes_2" title="Permanent link">&para;</a></h3>
<ul>
<li>velocity is now using the SLF4J logging facade. Hence, all methods accepting or returning a logger now use the org.slf4j.Logger object. Velocity uses a logger name of <code>org.apache.velocity</code> (configurable with the <code>runtime.log.name</code> configuration entry), and <a href="developer-guide.html#logging">several other childen loggers</a>.</li>
<li>the internal Context API now enforces String keys everywhere, this may break custom Context implementations at compile-time.</li>
<li>invalid reference events are now more sparsely sent; they're not sent if <em>any</em> of the following conditions is met (the 1.x behavior did send invalid reference events in all those cases):<ul>
<li>the reference is a quiet reference</li>
<li>the reference could be successfully evaluated but resulted in a null value</li>
<li>the reference is tested for validity inside an #if / #elseif statement</li>
</ul>
</li>
<li>all events do now receive the current Velocity Context as a first argument. The signatures of the <code>MethodExceptionEventHandler</code>, <code>ReferenceInsertionEventHandler</code> and <code>IncludeEventHandler</code> events have changed, and the <code>ContextAware</code> interface has been suppressed, as long as the <code>NullSetEventHandler</code> event which is obsolete.</li>
<li>The <code>ResourceLoader</code> class API has replaced InputStream getters by Reader getters: <code>InputStream ResourceLoader.getResourceStream(String name)</code> has been replaced by a <code>Reader ResourceLoader.getResourceReader(String name, String encoding)</code>.</li>
<li>the default encoding ('ISO-8859-1' in 1.x) is now UTF-8.</li>
<li>the MethodException event handler now receives an additional argument providing template name and location infos.</li>
<li>Initialization methods in Velocity and VelocityEngine taking an ExtendedProperties have been removed (but <code>setProperties(Properties)</code> methods are still here). All occurences of the org.apache.commons.collections.ExtendedProperties class in the runtime internal initialization API have been replaced by org.apache.velocity.util.ExtProperties.</li>
<li>the macros are now using a 'call by sharing' convention (which means that all arguments are evaluated once at start, and that the macro receives a copy of the reference to each argument).</li>
<li>the <code>UberspectLoggable</code> interface has been removed.</li>
<li>the <code>directive.if.tostring.nullcheck</code> configuration property has been superseded by the <code>directive.if.emptycheck</code> (warning: renamed as <code>directive.if.empty_check</code> in 2.1) property, which defaults to true. It means that all empty objects (strings and collections) as long as zero numbers, do evaluate to false (see the complete <a href="configuration.html#if-directive">boolean context evaluation</a> rules.). You may want to set <code>directive.if.emptycheck</code> to false to maximize backward compatibility with 1.x.</li>
<li>inside a macro, the rendering of null arguments uses the local reference literal (see 2.1 for an 1.7 compatibility flag).</li>
</ul>
<h3 id="vtl-changes_2">VTL Changes<a class="headerlink" href="#vtl-changes_2" title="Permanent link">&para;</a></h3>
<ul>
<li>the hypen ( <code>-</code> ) cannot be used in variable names anymore (see 2.1 for an 1.7 compatibility flag).</li>
<li>method arguments can be arithmetic expressions</li>
<li>method arguments are now converted as needed between all main basic Java standard types (booleans, numbers and strings). If you want to revert to the 1.x behavior, set the property <code>runtime.conversion.handler.class = none</code>.</li>
<li>space gobbling (to control the indentation of generated code) is now configurable via the <code>space.gobbling</code> configuration key, which can take the following values: <code>none</code>, <code>bc</code> (aka. backward compatible), <code>lines</code> and <code>structured</code>. See the related documentation section for details. To maximize backward compatibility with 1.x, set it to <code>bc</code>.</li>
<li>the #foreach predefined references <code>$velocityCount</code> and <code>$velocityHasNext</code> have been removed. Use <code>$foreach.count</code> (1-based), <code>$foreach.index</code> (0-based) and <code>foreach.hasNext()</code>.</li>
<li>Velocimacro arguments are now evaluated only once (instead of each time they were referenced inside the macro body as was the case for v1.7) and passed by value (or more precisely as reference after evaluation).</li>
<li>Velocimacros do not anymore have a <em>proxy context</em> of their own - if they do insert new values in the context, and then call an external code changing those values, they will now see the new values (see 2.2 for the velocimacro.enable_bc_mode backward compatibility flag).</li>
<li>2.x follows a <a href="https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html">standard operators precedence rule</a>, whereas with 1.7 the expression <code>! "$foo" == 'bar'</code> will, wrongly, evaluate the equality before the unary negation.</li>
</ul>
<h3 id="dependency-changes_2">Dependency Changes<a class="headerlink" href="#dependency-changes_2" title="Permanent link">&para;</a></h3>
<ul>
<li>Velocity now requires a JDK version of 1.7 or higher.</li>
<li>commons-collections and commons-logging aren't needed any more at runtime.</li>
<li>there's a new runtime dependency, slf4j-api 1.7.25.</li>
<li>you'll need an <a href="dependencies.html">SLF4J binding</a>.</li>
<li>commons-lang has to be upgraded to 3.5.</li>
</ul>
<h2 id="upgrading-from-velocity-16x-to-velocity-17x">Upgrading from Velocity 1.6.x to Velocity 1.7.x<a class="headerlink" href="#upgrading-from-velocity-16x-to-velocity-17x" title="Permanent link">&para;</a></h2>
<p>There are no changes in the dependencies since Velocity 1.6</p>
<ul>
<li>Deprecated $velocityCount; please use $foreach.count or $foreach.index</li>
<li>Deprecated $velocityHasNext; please use $foreach.hasNext, $foreach.first or $foreach.last</li>
<li>Deprecated velocimacro.context.localscope setting; please get/set local #macro references as members of the provided $macro scope control instead. (e.g. #set( $macro.foo = 'bar' ) and $macro.foo )</li>
<li>Deprecated directive.evaluate.context.class setting; please get/set local #evaluate references as members of the provided $evaluate scope control instead. (e.g. #set( $evaluate.foo = 'bar' ) and $evaluate.foo )</li>
<li>Deprecated #literal directive; please use #[[this syntax]]# instead.</li>
<li>Changed #stop to end template rendering rather than template parsing.</li>
<li>Removed obsolete Veltag (use VelocityViewTag in VelocityTools project)</li>
<li>Removed obsolete WebMacro conversion code.</li>
</ul>
<h2 id="upgrading-from-velocity-15x-to-velocity-16x">Upgrading from Velocity 1.5.x to Velocity 1.6.x<a class="headerlink" href="#upgrading-from-velocity-15x-to-velocity-16x" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="http://commons.apache.org/collections/">Commons Collections</a> has been upgraded to version 3.2.1.</li>
<li><a href="http://commons.apache.org/lang/">Commons Lang</a> has been upgraded to version 2.4.</li>
<li><a href="http://commons.apache.org/logging/">Commons Logging</a> is required for compiling and using CommonsLogLogChute.</li>
</ul>
<h2 id="upgrading-from-velocity-14-or-earlier">Upgrading from Velocity 1.4 or earlier<a class="headerlink" href="#upgrading-from-velocity-14-or-earlier" title="Permanent link">&para;</a></h2>
<ul>
<li><a href="http://www.jdom.org">JDOM</a> has been upgraded to version 1.0.</li>
<li><a href="http://jakarta.apache.org/commons/collections/">Commons Collections</a> has been upgraded to version 3.1.</li>
<li><a href="http://jakarta.apache.org/commons/lang/">Commons Lang</a> 2.1 has been added.</li></li>
</ul>
<p>Optional:
+ <a href="http://ant.apache.org">Apache Ant</a> 1.6 or better is required for rebuilding.
+ <a href="http://javacc.dev.java.net">JavaCC</a> 3.2 is recommended to compile the parser files.
+ <a href="http://www.hsqldb.org">HSQLDB</a> 1.7.1 is required for running unit tests.</p></div></div>
<hr/>
<div id="copyright">
Copyright &#169; 2020 The Apache Software Foundation, Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.
</div>
</div>
</div>
</body>
</html>