web-dev-qa-db-ja.com

JAXB2 Mavenプラグインにjavax.xml.accessExternalSchemaを指定する方法

Mavenプラグイン(jaxb2)があり、jvm引数を指定する必要があります。私はjvm argsをpomに追加するタグがあるとは思わない。

コマンドラインでjvm argsを渡すことができることを知っています。例:mvn clean install -Djavax.xml.accessExternalSchema=all

このjvm引数をpomに設定して、毎回コマンドラインに入力する必要がないようにすることは可能ですか?

(さておき-このjvm引数は、Java-8で動作するために必要です。Java-7で正常に動作します)

25
Josh

これは、新しい JAXB 1.5のXMLセキュリティプロパティ に関連しています。これは、Java 8で導入されました。これが、Java 8でビルドが失敗するがJava 7。

maven-jaxb2-pluginを使用している場合は、0.9.0以降のバージョンにアップグレードしてください(現在は0.10.0です)。現在、 accessExternalSchema スイッチがあります(デフォルトはallです)。

これにより、javax.xml.accessExternalSchema=allが正確に設定されます。

ドキュメント をご覧ください。

32
lexicore

Jaxb2-maven-pluginを使用しているときにこの問題に遭遇しました。 maven-jabx2-pluginに関連するjiraの問題を見つけました- https://Java.net/projects/maven-jaxb2-plugin/lists/issues/archive/2014-03/message/

この問題によると、Stephan202は、charmsのように機能するproperties-maven-pluginの使用を提案しました。これが彼の投稿のサンプルコードです-

<plugin>
<!-- We use this plugin to ensure that our usage of the
maven-jaxb2-plugin is JDK 8 compatible in absence of a fix
for https://Java.net/jira/browse/MAVEN_JAXB2_PLUGIN-80. -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0-alpha-2</version>
    <executions>
        <execution>
            <id>set-additional-system-properties</id>
            <goals>
                <goal>set-system-properties</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <properties>
            <property>
                <name>javax.xml.accessExternalSchema</name>
                <value>file,http</value>
            </property>
        </properties>
    </configuration>
</plugin>
20
Amit Misra

再;投稿-「アルファ版を使用しないソリューションが必要でした。それが私の会社のルールです。」

バージョンを1.0に変更し、値を「all」に変更すると、機能します。

<plugin>
<!-- We use this plugin to ensure that our usage of the
maven-jaxb2-plugin is JDK 8 compatible in absence of a fix
for https://Java.net/jira/browse/MAVEN_JAXB2_PLUGIN-80. -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <!--
    <version>1.0-alpha-2</version> -->
    <version>1.0.0</version>
    <executions>
        <execution>
            <id>set-additional-system-properties</id>
            <goals>
                <goal>set-system-properties</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <properties>
            <property>
                <name>javax.xml.accessExternalSchema</name>
                <value>all</value>
            </property>
        </properties>
    </configuration>
</plugin>
8
Neil Piper

それは私のために働いた:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <executions>
        <execution>
            <phase>process-sources</phase>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <vmArgs>
                    <arg>-Djavax.xml.accessExternalSchema=all</arg>
                </vmArgs>
                <keep>true</keep>
                <verbose>true</verbose>
                <wsdlDirectory>${project.build.directory}/wsdl</wsdlDirectory>
                <wsdlFiles>
                    <wsdlFile>ServiceWsService.wsdl</wsdlFile>
                </wsdlFiles>
                <bindingFiles>
                    <bindingFile>custom-binding.xml</bindingFile>
                    <bindingFile>custom-binding2.xml</bindingFile>
                </bindingFiles>                         
            </configuration>
        </execution>
    </executions>
</plugin>
2
user6280333

Maven Compiler Pluginをご覧ください。具体的には、<compilerArgument>要素を使用して設定をコンパイラに渡すことができるはずです。

例については、 http://maven.Apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html を参照してください。

0
creechy

Maven自体を実行しているJVMの動作を変更しようとしている場合は、mvnを起動する前に、環境内のMAVEN_OPTSにオプションを追加します。

0
bmargulies