我有一个 Maven 项目,它通过使用 XSLT 转换在
org.codehaus.mojo.xml-maven-plugin
(版本 1.0.2)的帮助下生成代码。
但是,运行时它超出了 XPath 运算符限制 100:
JAXP0801002: the compiler encountered an XPath expression containing '101' operators that exceeds the '100' limit set by 'FEATURE_SECURE_PROCESSING'.
我知道我可以通过在命令行上设置
-Djdk.xml.xpathExprOpLimit=500
来解决这个问题。但是有没有办法在 pom.xml 的一般位置设置它?
我知道像surefire这样的一些插件有这种可能性。但是那些没有的插件呢?有没有办法在 POM 中实现这一点,而不必在每次运行时在命令行上指定它?
Apache Maven 3.6.3
Java version: 11.0.19, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
完整的 POM 文件可以在这里找到:https://github.com/david-gibbs-ig/quickfixj/blob/9eff0b69f90ef205ace736bc7fa32784fe3185f3/quickfixj-base/pom.xml#L75
相关部分:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<executions>
<execution>
<id>extractRequiredFields</id>
<phase>generate-sources</phase>
<goals>
<goal>transform</goal>
</goals>
<configuration>
<transformationSets>
<transformationSet>
<dir>${project.basedir}/../quickfixj-orchestration/target/generated-resources</dir>
<outputDir>${project.build.directory}/generated-resources/extracted</outputDir>
<includes>
<include>${orchestra.file}</include>
</includes>
<stylesheet>${project.basedir}/src/main/xsl/extractRequiredFields.xsl</stylesheet>
</transformationSet>
</transformationSets>
</configuration>
</execution>
</plugin>
不完全是我在最初的问题中所要求的,但我现在通过在
.mvn/jvm.config
文件中设置所需的选项实现了类似的目标。该文件被签入存储库并在签出时检索,因此 Maven 会考虑该文件,而无需更改用户的环境。