1

我有一个用于测试的 CSS 文件。它@imports 我所有的样式表:

@import "css/structure.css"
@import "css/typography.css"
@import "css/forms.css"

这让我可以测试样式和更改,但以一种你永远不想活的方式。

当我“构建”这个项目时,我想找到所有这些引用 (RegEx css/(.*?.css)),然后将该列表用作 FileSet 来合并和压缩。

奇怪的是,合并和压缩是最简单的部分。我完全不知道如何使用 RegEx 来构建我的 FileSet。

如果我必须去一个 .properties 文件,我会的,但我希望有一些可以更加自动化的东西。

欣赏任何想法...

——内特

4

2 回答 2

0

标准文件通配符不起作用吗?你有没有尝试过:

<fileset dir="${resource.dir}" casesensitive="yes">
  <include name="**/*.css"/>
</fileset>

有关详细信息,请参阅文件集类型文档

于 2011-08-02T00:48:20.910 回答
0

我远不是一个伟大的 RegEx'er,但我想我找到了我的解决方案:

我创建了一个目标,它加载我的主要 styles.css 文件,从中刮取各个文件并将其全部放在逗号分隔的属性中:

    <!-- Get CSS Filelist -->
<target name="get.css">
    <loadfile property="list-temp.css" srcFile="${source_dev}/css/styles.css"/>
    <propertyregex property="list-temp2.css" input="${list-temp.css}" regexp='[\s|.]*?@import url\("(.*?)"\);\s' replace="\1," casesensitive="false" global="true" />
    <propertyregex property="list-temp3.css" input="${list-temp2.css}" regexp=',$' replace="" casesensitive="false" global="true" />
    <propertyregex property="list.css" input="${list-temp3.css}" regexp='/\*.*?\*/' replace="" casesensitive="false" global="true" />
    <echo>${list.css}</echo>
</target>

这导致 ${list.css} = "one.css, two.css, structure.css, etc.css" 然后我可以将其用作文件列表/文件集。

它不漂亮,但它有效。我希望我可以将 RegEx 改写成更健壮的东西(现在,您忘记了分号或使用单引号并且它被破坏了)......但是乞丐不能成为选择者!

感谢您的帮助 hoipolloi!

新西兰

于 2011-08-03T16:07:29.333 回答