| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| * 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. |
| --> |
| <project name="Engine-Installer"> |
| |
| <property name="download.dir" value="${basedir}/engines-download"/> |
| <property name="download.engines" value="${download.dir}/engines"/> |
| <property name="download.file" value="${download.dir}/engines.zip"/> |
| <property name="merged.engines.dir" value="${basedir}/target/merged-engines"/> |
| <property name="temp.services.dir" value="${basedir}/target/services-temp"/> |
| |
| <target name="check-merged"> |
| <condition property="already.merged" > |
| <and> |
| <available file="${basedir}/target/bsf-engines-${bsf.version}.jar"/> |
| </and> |
| </condition> |
| |
| </target> |
| |
| <macrodef name="unpack_factory"> |
| <attribute name="dir" /> |
| <attribute name="jar" /> |
| <sequential> |
| <echo level="info" message="** Extracting factory for @{dir} **"/> |
| <!-- Unpack factory into shared dir (except services) --> |
| <unzip src="${download.engines}/@{dir}/build/@{jar}.jar" dest="${merged.engines.dir}" overwrite="true"> |
| <patternset> |
| <exclude name="**/javax.script.*"/> |
| </patternset> |
| </unzip> |
| <!-- Unpack services into work directory, replacing previous file --> |
| <unzip src="${download.engines}/@{dir}/build/@{jar}.jar" dest="${temp.services.dir}" overwrite="true"> |
| <patternset> |
| <include name="**/javax.script.*"/> |
| </patternset> |
| </unzip> |
| <!-- Append the services file to the common services file --> |
| <concat destfile="${merged.engines.dir}/META-INF/services/javax.script.ScriptEngineFactory" append="true"> |
| <fileset dir="${temp.services.dir}"/> |
| </concat> |
| </sequential> |
| </macrodef> |
| |
| <target name="merge-engines" depends="check-merged, download-engines" unless="already.merged"> |
| |
| <mkdir dir="${download.dir}"/> |
| <unzip src="${download.file}" dest="${download.engines}" overwrite="true"/> |
| |
| <!-- now unzip all the engine jars into a single directory --> |
| |
| <delete dir="${merged.engines.dir}" quiet="true"/> |
| <mkdir dir="${merged.engines.dir}"/> |
| |
| <delete dir="${temp.services.dir}" quiet="true"/> |
| <mkdir dir="${temp.services.dir}"/> |
| |
| <!-- unpack_factory dir="beanshell" jar="bsh-engine"/ --> |
| <!-- unpack_factory dir="browserjs" jar="browserjs-engine"/ --> |
| <!-- unpack_factory dir="ejs" jar="js-engine"/ --> |
| <!-- unpack_factory dir="freemarker" jar="freemarker-engine"/ --> |
| <!-- unpack_factory dir="groovy" jar="groovy-engine"/ --> |
| <!-- unpack_factory dir="jacl" jar="jacl-engine"/ --> |
| <!-- unpack_factory dir="jaskell" jar="jaskell-engine"/ --> |
| <!-- unpack_factory dir="java" jar="java-engine"/ --> |
| <!-- unpack_factory dir="javascript" jar="js-engine"/ --> |
| <unpack_factory dir="javascript" jar="js-engine"/> |
| <!-- unpack_factory dir="jawk" jar="jawk-engine"/ --> |
| <!-- unpack_factory dir="jelly" jar="jelly-engine"/ --> |
| <!-- unpack_factory dir="jep" jar="jep-engine"/ --> |
| <!-- unpack_factory dir="jexl" jar="jexl-engine"/ --> |
| <!-- unpack_factory dir="jruby" jar="jruby-engine"/ --> |
| <!-- unpack_factory dir="jst" jar="jst-engine"/ --> |
| <!-- unpack_factory dir="judo" jar="judo-engine"/ --> |
| <!-- unpack_factory dir="juel" jar="juel-engine"/ --> |
| <unpack_factory dir="jython" jar="jython-engine"/> |
| <!-- unpack_factory dir="ognl" jar="ognl-engine"/ --> |
| <!-- unpack_factory dir="pnuts" jar="pnuts-jsr223"/ --> |
| <!-- unpack_factory dir="scheme" jar="scheme-engine"/ --> |
| <!-- unpack_factory dir="velocity" jar="velocity-engine"/ --> |
| <!-- unpack_factory dir="xpath" jar="xpath-engine"/ --> |
| <!-- unpack_factory dir="xslt" jar="xslt-engine"/ --> |
| |
| <!-- Now package all that up into a single jar --> |
| |
| <jar destfile="${basedir}/target/bsf-engines.tmp.jar" basedir="${merged.engines.dir}"> |
| </jar> |
| |
| <!-- Delete work directory --> |
| <delete dir="${merged.engines.dir}" /> |
| <delete dir="${temp.services.dir}" /> |
| |
| <!-- Use Retroweaver to convert all the classes to JDK 1.4 --> |
| |
| <echo level="info">localRepository='${localRepository}'</echo> |
| <echo level="info">settings.localRepository='${settings.localRepository}'</echo> |
| <taskdef name="retroweaver" classname="net.sourceforge.retroweaver.ant.RetroWeaverTask"> |
| <classpath> |
| <pathelement location="${localRepository}/net/sourceforge/retroweaver/retroweaver/2.0.7/retroweaver-2.0.7.jar"/> |
| <pathelement location="${localRepository}/net/sourceforge/retroweaver/retroweaver-rt/2.0.7/retroweaver-rt-2.0.7.jar"/> |
| <pathelement location="${localRepository}/asm/asm/3.1/asm-3.1.jar"/> |
| <pathelement location="${localRepository}/asm/asm-commons/3.1/asm-commons-3.1.jar"/> |
| <pathelement location="${localRepository}/asm/asm-util/3.1/asm-util-3.1.jar"/> |
| <pathelement location="${localRepository}/backport-util-concurrent/backport-util-concurrent/2.2/backport-util-concurrent-2.2.jar"/> |
| </classpath> |
| </taskdef> |
| |
| <retroweaver inputjar="${basedir}/target/bsf-engines.tmp.jar" outputjar="${basedir}/target/bsf-engines-${bsf.version}.jar"/> |
| |
| <!-- Delete the temporary work file --> |
| <delete file="${basedir}/target/bsf-engines.tmp.jar"/> |
| |
| </target> |
| |
| <target name="check-downloaded"> |
| <condition property="already.downloaded" > |
| <and> |
| <available file="${download.file}"/> |
| </and> |
| </condition> |
| |
| <!-- these are required for the mvn install command to work correctly --> |
| <condition property="maven.suffix" value=""> |
| <os family="unix"/> |
| </condition> |
| <condition property="maven.suffix" value=".bat"> |
| <os family="windows"/> |
| </condition> |
| </target> |
| |
| <target name="download-engines" depends="check-downloaded" unless="already.downloaded"> |
| <mkdir dir="${download.dir}"/> |
| <get src="https://scripting.dev.java.net/files/documents/4957/37593/jsr223-engines.zip" |
| dest="${download.file}" |
| verbose="true" |
| usetimestamp="false"/> |
| <unzip src="${download.file}" |
| dest="${download.engines}" |
| overwrite="false"/> |
| </target> |
| |
| </project> |