Maven资源过滤器支持条件吗?

4
我想知道在Maven资源过滤中是否有一种方法来执行if条件语句。例如,允许我执行以下操作:

somefile.txt:

...
#if($some.project.property == true)
  some text to include here
#endif
...

与Velocity类似的东西。


1
Maven使用Velocity,是的,您应该能够使用那段代码,只需要做一些语法上的修改。您试过了吗? - Sergiu Dumitriu
我已经尝试过那段代码,但它没有起作用。它只是输出了我的资源文件中的if/else代码,而没有解释它。你确定Maven使用Velocity吗?有人能给我一个例子吗? - Paul Rivera
请参考此筛选资源以及POM配置的示例。 - Sergiu Dumitriu
确保文件被筛选。一个简单的 ${variable} 能正确打印吗? - Sergiu Dumitriu
Maven使用Velocity进行站点生成,但不用于资源过滤。 - khmarbaise
2个回答

3

简短回答是否。但如果你真的需要条件,你可以查看velocity-maven-plugin,它可以解决你的问题。但它并不是用于过滤资源的,但在你的使用情况下可能会有效。

 <plugin>
    <groupId>com.googlecode.velocity-maven-plugin</groupId>
    <artifactId>velocity-maven-plugin</artifactId>
    <version>1.0.0</version>
    <configuration>
            <templateFiles>
                    <directory>/src/main/resources</directory>
                    <includes>
                            <include>*.vm</include>
                    </includes>
            </templateFiles>
            <templateValues>
                    <test>foo</test>
            </templateValues>
    </configuration>
 </plugin>

谢谢khmarbaise。是的,我也这么想。 - Paul Rivera
FYI,在我的例子中,资源确实被正确过滤了。我可以替换变量。 - Paul Rivera

1

在某些情况下,仅设置属性(每个配置文件)可能是有用的。

<yourProperty><![CDATA[    <your>        <block>of code</block>    </your>    ]]></yourProperty>

如果您不想要代码块,请将属性设置为空字符串。
例如,我使用它将注入到我的web.xml中进行开发构建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接