JAXBの問題を伴うMavenリリースプラグイン
-
28-09-2019 - |
質問
Mavenリリースプラグインを使用するプロジェクトが設定されています。これには、Artifactoryから引き出されたXMLスキーマの瓶を解き放つフェーズとXJCクラスを生成するフェーズを含むプロジェクトが設定されています。私たちはMavenリリース2.2.1を使用しています。
残念ながら、後者のフェーズは前者の前で実行されています。つまり、スキーマのXJCクラスが生成されていないことを意味します。部分的なpom.xmlは次のように見えます:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack</id>
<!-- phase>generate-sources</phase -->
<goals>
<goal>unpack</goal>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>ourgroupid</groupId>
<artifactId>ourschemas</artifactId>
<version>5.1</version>
<outputDirectory>${project.basedir}/src/main/webapp/xsd</outputDirectory>
<excludes>META-INF/</excludes>
<overWrite>true</overWrite>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>maven-buildnumber-plugin</artifactId>
<version>0.9.6</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>create</goal>
</goals>
</execution>
</executions>
<configuration>
<doCheck>true</doCheck>
<doUpdate>true</doUpdate>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<configuration>
<schemaDirectory>${project.basedir}/src/main/webapp/xsd</schemaDirectory>
<schemaIncludes>
<include>*.xsd</include>
<include>*/*.xsd</include>
</schemaIncludes>
<verbose>true</verbose>
<!-- args>
<arg>-Djavax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema=org.apache.xerces.jaxp.validation.XMLSchemaFactory</arg>
</args-->
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
私はそれをグーグルで試してみましたが、残念ながら何千ものリンクのケースになってしまいました。それが行われる前に実行されましたb。
ありがとう
解決
実行の注文にはいくつかの問題がありました(例: MNG-3719, MNG-2258)しかし、それはMaven 2.2.1で大丈夫なはずです プラグインは、同じフェーズにバインドされているときにPOMにリストされているのと同じ順序で実行する必要があります. 。そして確かに、あなたのPOMがわずかに変更された状態で:
- 私はそれを知らなかった
<phase>generate-sources</phase>
依存関係プラグインの - 追加した
id
にexecution
要素 - 依存関係プラグインに「偽の」依存関係を使用しました
次の出力を取得します。
$ mvn generate-sources [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Building Q3070794 [INFO] task-segment: [generate-sources] [INFO] ------------------------------------------------------------------------ [INFO] [dependency:unpack {execution: step1-unpack}] [INFO] Configured Artifact: c3p0:c3p0:0.9.1.2:jar [INFO] Unpacking /home/pascal/.m2/repository/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2.jarto /home/pascal/Projects/stackoverflow/Q3070794/src/main/webapp/xsd with Includes null and excludes:META-INF/ [INFO] [dependency:copy {execution: step1-unpack}] [INFO] Configured Artifact: c3p0:c3p0:0.9.1.2:jar [INFO] Copying c3p0-0.9.1.2.jar to /home/pascal/Projects/stackoverflow/Q3070794/src/main/webapp/xsd/c3p0-0.9.1.2.jar [INFO] [jaxb2:generate {execution: step2-xjc}] [INFO] Started execution. ...
dependency:unpack
と dependency:copy
終わらせる 前 jaxb2:generate
. 。私が何かを逃さない限り、これは期待される結果です。 Maven 2.2.1でテストしました。
所属していません StackOverflow