我想在给定文本文件(./WEB-INF/app.html
)的特定点嵌入可变数量的文本文件(AngularJs模板),但除了修改文件将其保存为另一个文件(./index.html
?我要嵌入的所有文件的文件名都以*.ng.html
结尾,并且都在./assets/templates/
的子文件夹中。
我还想在嵌入文件之前和之后写文本(使AngularJS认识到它们是模板)。此文本应由静态文本和相对于工作目录的文件名组成。
这是一个可能的工作目录结构:
(index.html) (generated after building)
--assets
--templates
--general
about.ng.html
contact.ng.html
home.ng.html
--users
userlist.ng.html
--WEB-INF
app.html
可以使用Ant完成吗?如果没有,我如何在Eclipse的构建时做到这一点呢?
为了进一步说明我的意图,下面是一些例子:
。/web - inf/app.html
<!doctype html>
<html><head>
@INSERTION_POINT@
</head><body></body></html>
。/资产/模板/一般/about.ng.html
This is a test.
。/资产/模板/一般/contact.ng.html
You can contact me at: <a href=mailto:mail@example.com>mail@example.com</a>
。/资产/模板/一般/home.ng.html
Welcome.<br>
Click a link to explore.
。/资产/模板/用户/userlist.ng.html
<ol>
<%= "{{#userlist}}" %>
<li>
{{username}}
</li> <%= "{{/userlist}}" %>
</ol>
构建后,我希望./index.html
看起来像:
<!doctype html>
<html><head>
<script type="text/ng-template" id="/assets/templates/general/about.ng.html">
This is a test.
</script>
<script type="text/ng-template" id="/assets/templates/general/contact.ng.html">
You can contact me at: <a href=mailto:mail@example.com>mail@example.com</a>
</script>
<script type="text/ng-template" id="/assets/templates/general/home.ng.html">
Welcome.<br>
Click a link to explore.
</script>
<script type="text/ng-template" id="/assets/templates/users/userlist.ng.html">
<ol>
<%= "{{#userlist}}" %>
<li>
{{username}}
</li> <%= "{{/userlist}}" %>
</ol>
</script>
</head><body></body></html>
我发现我可以得到一个我想要嵌入的文件列表:
<fileset dir="war/assets/templates">
<include name="**/*.ng.html"/>
</fileset>
当我得到最终字符串时,我可以替换占位符并将输出保存到一个新文件中,可能像这样:
<copy file="WEB-INF/app.html" tofile="index.html">
<filterset>
<filter token="INSERTION_POINT" value="??foo??"/>
</filterset>
</copy>
但是我如何得到我想要作为值传递的字符串?
绝对不是你想要的…对不起……但是可能会考虑一个面向Javascript的构建工具(Grunt),并将其与eclipse集成(或者如果你试图在java和Javascript中保持构建相同,甚至可以从ant运行它)
虽然这可能不是你想要的,但如果你坚持标准,你可以保证得到很多社区的支持。