是否有通用的方法在pom.xml中设置-D参数?

时间:2015-12-17 16:54:08

标签: maven jaxb2-maven-plugin

tl; dr:那么,有没有办法移动-D系统属性的定义并将其内化到pom.xml文件中?

我们目前正在-Djavax.xml.accessExternalSchema=all从命令行传递mvn clean install -Djavax.xml.accessExternalSchema=all以使我的构建工作正常。我无法通过插件(jaxb2-maven-plugin 1.6)中的选项,因为我们使用的版本不支持此版本,而且版本需要完全更改配置,我们无法获得批准为此。

尝试通过在<properties>标记下添加<project> <properties> <javax.xml.accessExternalSchema>all</javax.xml.accessExternalSchema> </properties> 来设置使用标记的值:

Caused by: org.xml.sax.SAXParseException; 
systemId: jar:file:/e:/apache/maven/.m2/repository/com/sun/xml/bind/jaxb-xjc/2.2.7/jaxb-xjc-2.2.7.jar!/com/sun/tools/xjc/reader/xmlschema/bindinfo/binding.xsd; 
lineNumber: 52; columnNumber: 88; schema_reference: 
Failed to read schema document 'xjc.xsd', because 'file' access is not allowed due to restriction set by the accessExternalSchema property.

但我仍然会收到错误(在下面转载),而通过命令行传递则不会。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0.0</version>
    <executions>
        <execution>
            <goals>
                <goal>set-system-properties</goal>
            </goals>
            <configuration>
                <properties>
                    <property>
                        <name>javax.xml.accessExternalSchema</name>
                        <value>all</value>
                    </property>
                </properties>
            </configuration>
        </execution>
    </executions>
</plugin>

2 个答案:

答案 0 :(得分:7)

是的,您可以使用suggested elsewhere使用Properties Maven pluginset-system-properties goal会在initialize phase期间设置它。

{{1}}

答案 1 :(得分:0)

出于某种原因,这里接受的答案(以及我在网上找到的许多其他解决方案)对我不起作用。 对于具有相同问题的其他人,maven-surefire-plugin也可能提供解决方案:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <systemPropertyVariables>
            <javax.xml.accessExternalSchema>all</javax.xml.accessExternalSchema>
        </systemPropertyVariables>
    </configuration>
</plugin>