Mavenプラグイン(jaxb2)があり、jvm引数を指定する必要があります。私はjvm argsをpomに追加するタグがあるとは思わない。
コマンドラインでjvm argsを渡すことができることを知っています。例:mvn clean install -Djavax.xml.accessExternalSchema=all
このjvm引数をpomに設定して、毎回コマンドラインに入力する必要がないようにすることは可能ですか?
(さておき-このjvm引数は、Java-8で動作するために必要です。Java-7で正常に動作します)
これは、新しい 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
が正確に設定されます。
ドキュメント をご覧ください。
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>
再;投稿-「アルファ版を使用しないソリューションが必要でした。それが私の会社のルールです。」
バージョンを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>
それは私のために働いた:
<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>
Maven Compiler Pluginをご覧ください。具体的には、<compilerArgument>
要素を使用して設定をコンパイラに渡すことができるはずです。
例については、 http://maven.Apache.org/plugins/maven-compiler-plugin/examples/pass-compiler-arguments.html を参照してください。
Maven自体を実行しているJVMの動作を変更しようとしている場合は、mvnを起動する前に、環境内のMAVEN_OPTSにオプションを追加します。