Как вставить один файл в другой с помощью Ant?

Я разрабатываю небольшой проект веб-приложений (ColdFusion), и я стараюсь, чтобы мой проект разбился на несколько файлов во время разработки, но разворачивает только один файл при завершении.

У меня есть ссылки на внешние файлы, например:

И когда я строю свой проект, я хочу, чтобы файлы были включены и встроены в один файл готового продукта.

Во всяком случае, не похоже, что для Ant существует основной способ сделать это. Кто-нибудь знает?

3 ответа

Отвечая на мой собственный вопрос после нескольких часов взлома...

', '');
 }
 return htmlFileText;
}
// CSS Replacement
def cssReplace(htmlFileText) {
 println "Groovy: Replacing CSS includes"
 // extract all matched CSS style href links
 def cssRegex = /]*href=\"([^\"]+)\"[^>]*>(<\/link>)?/
 def matcher = (htmlFileText =~ cssRegex)
 for (i in matcher) {
 // read external files in
 def includeText = new File(matcher.group(1)).text
 // compress CSS
 includeText = includeText.replaceAll(/[\n\r\t\f\s]+/, " ")
 // sanitize the string for being regex replace string (dollar signs like jQuery/Prototype will screw it up)
 includeText = java.util.regex.Matcher.quoteReplacement(includeText)
 // return content with embedded file
 htmlFileText = htmlFileText.replaceFirst(']*href="'+ matcher.group(1) +'"[^>]*>(<\\/link>)?', '');
 }
 return htmlFileText;
}

Итак, я думаю, это делает это для меня. Он работает очень хорошо, и он расширяемый. Определенно, не самый лучший groovy когда-либо, но он один из моих первых. Кроме того, для его компиляции потребовалось несколько кластерных пакетов. Я проигнорировал их, но я считаю, что это javax.scripting engine, groovy -engine.jar и groovy -all-1.5.6.jar


Это делает то, что вы хотите?

<property name="filename" value="jquery-1.2.6.pack.js">
<loadfile property="contents" srcfile="${filename}">
<replace dir=".">
 <include name="index.cfm">
 <replacetoken><!--[CDATA[<script type="text/javascript" src="${filename}"-->]]></replacetoken>
 <replacevalue><!--[CDATA[<script type="text/javascript"-->${contents}]]></replacevalue>
</include></replace>
</loadfile></property>


Для решения в чистом ant попробуйте следующее:

<target name="replace">
 <property name="js-filename" value="jquery-1.2.6.pack.js">
 <property name="css-filename" value="project.css">
 <loadfile property="js-file" srcfile="${js-filename}">
 <loadfile property="css-file" srcfile="${css-filename}">
 <replace file="input.txt">
 <replacefilter token="<script type=" text="" javascript"="" src="${js-filename}">" value="">
 <replacefilter token="<link type=" text="" css"="" rel="stylesheet" href="${css-filename}">" value="">
 </replacefilter></replacefilter></replace>
</loadfile></loadfile></property></property></target>

Я тестировал его, и он работал, как ожидалось. В тексте, который нужно заменить, и введенном вами значении, все символы '<', ' > ' и '' 'должны быть указаны как & lt;, & gt; ".

licensed under cc by-sa 3.0 with attribution.