5
我想弄明白一種方法讓Ant運行一個.jar可執行文件,它接受一個文件並從單個輸入文件中分出幾個生成的文件。具體來說,我試圖生成編譯的.js文件,同時生成.map文件。爲Ant應用指定多個輸出文件或目標文件任務
通常情況下,命令會是這樣的:
java -jar compiler-latest --js a.js --js_output_file a.min.js --create_source_map a.js.map
其中:
compiler-latest
是封閉編譯罐子a.js
是JavaScript文件編譯a.min.js
是編譯的JavaScripta.js.map
是源地圖
我的Ant腳本是這樣的:
<project name="BuildTest" default="Build" basedir=".">
<description>
HTML Build Test with Ant
</description>
<property name="src" location="../js"/>
<property name="dst" location="../build"/>
<property name="compiler" location="../compiler.jar"/>
<!--Make Dest Directory-->
<target name="-destination">
<mkdir dir="${dst}"/>
</target>
<!--Compile JS-->
<target name="Build" depends="-destination">
<!--Filesets and Mappers-->
<fileset id="sourceFiles" dir="${src}" includes="*.js"/>
<mapper id="compiledJs" type="glob" from="*.js" to="*.compiled.js"/>
<mapper id="mapJs" type="glob" from="*.js" to="*.js.map"/>
<!--Apply Everything-->
<apply executable="java" parallel="false" dest="${dst}">
<!--Closure Compiler-->
<arg value="-jar"/>
<arg path="${compiler}"/>
<arg value="--compilation_level=SIMPLE_OPTIMIZATIONS"/>
<!--Source Files-->
<arg value="--js"/>
<srcfile/>
<fileset refid="sourceFiles"/>
<!--Output Files-->
<arg value="--js_output_file"/>
<targetfile/>
<mapper refid="compiledJs"/>
<!--Source Maps-->
<arg value="--source_map_format=V3"/>
<arg value="--create_source_map"/>
<arg value="--js_output_file"/>
<targetfile/>
<mapper refid="mapJs"/>
</apply>
</target>
<!--Clean Project-->
<target name="Clean" description="Cleans the project">
<delete dir="${dst}"/>
</target>
</project>
但是,我得到一個錯誤,說我不能有多個<targetfile/>
元素
apply doesn't support multiple targetfile elements.
謝謝,這幾乎解決了我的問題。我確實需要做一些調整,因爲我的編譯器離我的實際項目目錄很遠,這些目錄爲我提供了一些有趣的相關內容。不過,我現在需要弄清楚如何將地圖名稱附加到縮小腳本的文本末尾,我不確定如果沒有某些擴展,Ant就無法做到這一點。我試圖用一個'echo'和'concat'任務來運行,所以我想我可以堅持使用批處理/ shell'Makefile'解決方案。非常感謝您的幫助。螞蟻仍然看起來很強大。 – zero298