使用maven筛选web.xml会导致字体未加载
我用JSF2和Maven 3开发了一个web应用程序。 在我的应用程序中,我在css中使用具有以下代码的自定义字体:使用maven筛选web.xml会导致字体未加载,maven,jsf-2,font-face,Maven,Jsf 2,Font Face,我用JSF2和Maven 3开发了一个web应用程序。 在我的应用程序中,我在css中使用具有以下代码的自定义字体: @font-face { font-family: 'another_shabby'; src: url("#{resource['fonts:anothershabby_trial-webfont.eot']}"); src: url("#{resource['fonts:anothershabby_trial-webfont.eot']}?#iefix") forma
@font-face {
font-family: 'another_shabby';
src: url("#{resource['fonts:anothershabby_trial-webfont.eot']}");
src: url("#{resource['fonts:anothershabby_trial-webfont.eot']}?#iefix")
format('embedded-opentype'),
url("#{resource['fonts:anothershabby_trial-webfont.woff']}")
format('woff'),
url("#{resource['fonts:anothershabby_trial-webfont.ttf']}")
format('truetype'),
url("#{resource['fonts:anothershabby_trial-webfont.svg']}#WebSymbolsRegular")
format('svg');
font-weight: normal;
font-style: normal;}
字体文件位于我的resources
文件夹中,目录为:webapp/resources/font
现在,我有一个问题似乎是由Maven引起的
我在maven中添加了一个过滤器来解析web.xml,以便根据maven概要文件在开发和生产之间动态切换上下文参数javax.faces.PROJECT_STAGE
这是我的pom:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<webResources>
<resource>
<directory>src/main/webapp</directory>
<filtering>true</filtering>
</resource>
</webResources>
</configuration>
</plugin>
<profile>
<id>dev</id>
<properties>
<jsfProjectStage>Development</jsfProjectStage>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
org.apache.maven.plugins
maven战争插件
2.2
src/main/webapp
真的
发展
发展
真的
web.xml文件:
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>${jsfProjectStage}</param-value>
</context-param>
javax.faces.PROJECT_阶段
${jsfProjectStage}
当我使用这个配置时,字体没有正确加载,但是如果我删除pom中的过滤器,并且上下文参数是“硬编码”的,那么一切都可以正常工作。。。我在Safari(Mac+iPhone)和Chrome上进行了测试
我的配置有问题吗?我错过什么了吗?这是一个已知问题吗?..您正在筛选二进制文件(即字体文件) 查看指南如何仅排除/包括选定资源 正如它所说的 为了防止在启用筛选时损坏二进制文件,可以配置一个不被筛选的文件扩展名列表 做
org.apache.maven.plugins
maven战争插件
2.6
properties/config.prop
pdf
资源2
假的
配置
真的
**/性质
根据经验,过滤尽可能少的文件(以获得最佳性能),并让maven复制大部分文件。当一个文件被过滤时,它必须被逐个字符处理(根据给定的字符集),而当不被过滤时,它只是被复制到一个文件系统上。在做了一些研究之后,我找到了解决我问题的另一种方法。我将其发布,以防万一:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
</configuration>
</plugin>
org.apache.maven.plugins
maven战争插件
2.6
真的
过滤后的css是什么样子的?您可以将资源从“筛选”中排除。。。这可能是一个答案,但我的“声誉”分数还不够高,目前还不能投票支持答案。。。很抱歉
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<filteringDeploymentDescriptors>true</filteringDeploymentDescriptors>
</configuration>
</plugin>