我正在尝试创建两种CSS聚合-一种用于公共(public)站点,另一种用于站点的应用程序部分。
如果我将输出文件设为${project.build.directory}/${project.build.finalName}/css/public-all.css
,则一切正常。
[INFO] generate aggregation : C:\Users\me\IdeaProjects\myapp-development\target\myapp-1.0\css\public-all.css
[INFO] public-all.css (32029b)
[INFO] generate aggregation : C:\Users\me\IdeaProjects\myapp-development\target\myapp-1.0\css\application-all.css
[INFO] application-all.css (50446b)
但是,如果我尝试将聚合文件输出到另一个子目录(例如
${project.build.directory}/${project.build.finalName}/css/public/all.css
),则会出现以下错误:[INFO] generate aggregation : C:\Users\me\IdeaProjects\myapp-development\target\myapp-1.0\css\public\all.css
[WARNING] all.css not created
[INFO] generate aggregation : C:\Users\me\IdeaProjects\myapp-development\target\myapp-1.0\css\application\all.css
[WARNING] all.css not created
为什么不创建它们?为什么这甚至是警告而不是插件的彻底失败?
这是
pom.xml
部分,我在其中指定聚合。为什么这在地球上不起作用? <aggregation>
<removeIncluded>false</removeIncluded>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/css/public/all.css</output>
<includes>
<include>**/public/base.css</include>
<include>**/fancybox/jquery.fancybox-1.3.4.css</include>
</includes>
</aggregation>
<aggregation>
<removeIncluded>false</removeIncluded>
<insertNewLine>true</insertNewLine>
<output>${project.build.directory}/${project.build.finalName}/css/application/all.css</output>
<includes>
<include>**/application/reset.css</include>
<include>**/application/text.css</include>
<include>**/application/960.css</include>
<include>**/smoothness/jquery-ui-1.8.11.custom.css</include>
<include>**/application/base.css</include>
<include>**/jcrop/jquery.jcrop.css</include>
<include>**/farbtastic/farbtastic.css</include>
</includes>
</aggregation>
我检查了,这些目录也存在。如果我尝试指向不存在的目录,则
yuicompressor:compress
将失败。我只是不明白为什么在给定有效目录的情况下构建过程实际上会成功完成,但是却没有在这些目录中创建文件。这个不成立!我以为这可能是文件系统安全性问题,但事实并非如此。
我真的对为什么这不起作用感到困惑。
请帮忙。
最佳答案
我有一个类似的问题,我解决了将inputDir配置为指向我的js结构的根目录的问题。默认情况下,该插件将输出文件的父目录作为基础,并且include的行为相对于它(如果不是绝对路径)。
<inputDir>src/main/js</inputDir>
<includes>
<include>**/*.js</include>
</includes>
<output>${webapp.root.dir}/js/${project.artifactId}-${project.version}.js</output>
希望这可以帮助 :)