Hi zusammen,
ich versuch aktuell, eine filelist per apply zu iterieren und dabei einen ant call zu parametisieren. Ich frag mich, ob das überhaupt möglich ist.
Mein bisheriges build script sieht so aus:
properties file:
Code:
dir.docroot = html
dir.docroot.css = ${dir.docroot}/css
dir.docroot.js = ${dir.docroot}/js
dir.docroot.widgets = ${dir.docroot.js}/ui-widgets
files.css = jquery.mobile.css, ui.notify.css, highlight.css
files.less = style.less
files.widgets = dyn.contextmenu.js, dyn.firstEnter.js, dyn.icons.js
files.js = blog.all.js, ui.all.js
files.cssCompiled = style.all.css
files.widgetsConcat = dyn.widgets.js
tools.csscompressor = yuicompressor-2.4.2.jar
tools.jscompressor = uglifyjs
tools.less = lessc
Code:
<?xml version="1.0"?>
<project name="example.com" default="build" basedir="../">
<property file="build/default.properties"/>
<!-- less files -->
<target name="less">
<echo message="compile less file ${files.less}"/>
<basename property="less.filename" file="${css.less}" suffix=".less" />
<exec executable="${tools.less}" dir="${dir.docroot.css}" failonerror="true">
<arg line="${files.less}" />
<arg line="${less.filename}.css"/>
</exec>
</target>
<!-- uglifyjs - minify js -->
<target name="uglify" >
<echo message="uglify file ${js.filename}"/>
<basename property="js.basename" file="${js.filename}" suffix=".js" />
<exec executable="${tools.jscompressor}" failonerror="true">
<arg line="--output ${destination.directory}/${js.basename}.min.js" />
<arg line="${js.filename}"/>
</exec>
</target>
<!-- iterate over widgets-->
<target name="widgets">
<concat destfile="${dir.docroot.js}/${files.widgetsConcat}">
<filelist dir="${dir.docroot.widgets}" files="${files.widgets}"/>
</concat>
<antcall target="uglify">
<param name="js.filename" value="${dir.docroot.js}/${files.widgetsConcat}" />
<param name="destination.directory" value="${dir.docroot.js}" />
</antcall>
</target>
<target name="build">
<antcall target="uglify">
<param name="js.filename" value="${dir.docroot.js}/file1.js" />
<param name="destination.directory" value="${dir.docroot.js}" />
</antcall>
<antcall target="uglify">
<param name="js.filename" value="${dir.docroot.js}/file2.js" />
<param name="destination.directory" value="${dir.docroot.js}" />
</antcall>
<!-- und viele mehr .. -->
<antcall target="widgets" />
<antcall target="less" />
</target>
</project>
Dabei würde ich gern die parametisieren ant-calls aus dem build rausnehmen und etwas in der Art bauen:
Code:
<!-- minify js files -->
<target name="minifyJS">
<apply>
<fileset dir="./${dir.docroot.js}/" includes="${files.js}" />
<antcall target="uglify">
<param name="js.filename" value="injiziertes file aus Iteration" />
<param name="destination.directory" value="${dir.docroot.js}" />
</antcall>
</apply>
</target>
${files.js} ist in dem Moment eine kommaseperierte Liste an javascript files, die ich gern minifien lassen möchte.
Geht das überhaupt? Wenn ja, wie?
Grüße
Basti