2016-04-10 4 views
1

Mavenビルド中に.xsdファイルを処理中に問題が発生しました。 jaxb2プラグインを使用していますが、私の外部の依存関係を.xsdファイルからダウンロードする必要があります。問題は、これらの依存関係(.xsd)が不安定な環境にあり、mavenがxsdファイルをダウンロードできないため、ビルドが失敗することが非常に多いことです。ビルドの失敗を防ぐためにjaxbプラグインをxsdを何度もダウンロードしようとするように設定するには?私のpom.xml構成のmavenのxsd依存関係を処理するときにIOExceptionがスローされる

パート:

<plugins> 
      <plugin> 
       <groupId>org.jvnet.jaxb2.maven2</groupId> 
       <artifactId>maven-jaxb2-plugin</artifactId> 
       <configuration> 
        <strict>false</strict> 
        <extension>true</extension> 
        <args> 
         <arg>-Xfluent-api</arg> 
         <arg>-XtoString</arg> 
         <arg>-Xsetters</arg> 
         <arg>-XenumValue</arg> 
        </args> 
        <plugins> 
         <plugin> 
          <groupId>net.java.dev.jaxb2-commons</groupId> 
          <artifactId>jaxb-fluent-api</artifactId> 
          <version>${jaxb.fluentapi.version}</version> 
         </plugin> 
         <plugin> 
          <groupId>org.jvnet.jaxb2_commons</groupId> 
          <artifactId>jaxb2-basics</artifactId> 
          <version>0.9.3</version> 
         </plugin> 

        </plugins> 
        <bindingDirectory>src/main/resources/jaxb</bindingDirectory> 
        <bindingIncludes> 
         <include>bindings.xml</include> 
        </bindingIncludes> 
        <schemas> 
         <schema> 
          <fileset> 
           <!-- Defaults to schemaDirectory. --> 
           <directory>${project.basedir}/src/main/resources/orbeons</directory> 
           <!-- Defaults to schemaIncludes. --> 
           <includes> 
            <include>*.xsd</include> 
           </includes> 
          </fileset> 
         </schema> 
        </schemas> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>generate-resources</phase> 
         <goals> 
          <goal>generate</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>build-helper-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>add-source</id> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>add-source</goal> 
         </goals> 
         <configuration> 
          <sources> 
           <source>${project.basedir}/generated-sources/orbeons</source> 
          </sources> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 

答えて

2

どうやらmaven-jaxb2-pluginは、このような機能をサポートしていません。 (また、maven-download-plugin、さらにはmaven-dependency-pluginもありません)。

  • は、(CIツールを使用します。

    三つのソリューションは、[数字は私がどうなるのかの優先順位を反映]を、現時点では私の心に入って来る(プラスLIttle Ancient Forest Kamiさんのコメントに触発された2年半)ジェンキンスなど)は、ジョブの失敗時に再試行をサポートします。 [1]

  • 手作り:

    ...ダウンロードを実行し、プロジェクトのPOMのgenerate-resourcesフェーズにバインドし直します。 maven-download-pluginを使用し、再試行を行う適切なパラメータ(urloutputDirectoryretryCount)と

    • Create a Maven plugin。プロジェクトのPOMのgenerate-resourcesフェーズに目標をバインドします。 [4]

    • .xsdをダウンロードするgenerate-resources相に結合したmaven-download-pluginを使用していますcheck-download Mavenプロジェクトを作成します。 [6]

      (擬似コードで)以下を含有するシェルスクリプトを作成します。

      download: 
          counter++ 
          <check-download project>/mvn generate-resources 
          if error and counter < maxRetryCount goto download 
      
      if not error 
          <your project>/mvn ... 
      else 
          display appropriate error message 
      

を2005未​​回答の質問Maven download retry?もあります。

+1

Maven自体(チェックやビルドに失敗して失敗している)によって強制されず、誰もドキュメントを読んでいないため、何が起こったのか分かりませんでした。 ;-)他のオプションについては:antTaskやexec Mavenコール? –

+0

@LIttleAncientForestKami "_nobodyはdocs_を読み取ります" - 非常に正しい!残念ながら。蟻?本当に? Mavenを使って、Ant/Ivyの設定を冗長に取り除きましたが、ここで再導入しますか? ;)私は初めてあなたのプロフィールで "_Javavore_"という言葉を読んだことがあります。大好きです!そのためにあなたを1000に押し込んだ。 –

+1

* BTW:なぜプラグインが "Plugin Naming Convention and Apache Maven Trademark"を大胆な文字で尊重しているのか不思議です* [こちら](https://github.com/highsource/maven- jaxb2-plugin/issues/26#issuecomment-66928927)。プラグインはこの命名規則が確立されるずっと前にこの方法で命名されました。名前を変更するとコミュニティが壊れます。だから、Apacheは私に休暇中止の手紙を送ってもらえます。私はこの「あなたが私たちの大会を尊重しない」ことに疲れているので、プロジェクトを終了します。 – lexicore

2

ここではmaven-jaxb2-pluginの著者です。

外部リソースのダウンロードの管理とスキーマのコンパイル、ローカルファイルへの「外部」リンクの書き換えがあります。

最初の(管理ダウンロード)はmaven-jaxb2-pluginの範囲ではなく、2番目の数字は catalogsでサポートされています。要するに

、あなたはこのようなカタログファイルを作成することができます

REWRITE_SYSTEM "http://www.w3.org" "w3c" 

またはこの:

REWRITE_SYSTEM "http://schemas.opengis.net" "maven:org.jvnet.ogc:ogc-schemas:jar::!/ogc" 

とMaven内のローカルファイルやリソースへの絶対リンクを「書き換え」にこのファイルを使用します成果物:

<configuration> 
    <catalog>src/main/resources/catalog.cat</catalog> 
</configuration> 

最初の部分については、私は再試行、継続nsと他のすべてのものは、JAXB2 Mavenプラグインの対象となるはずです。

ps。 maven-jaxb2-pluginbuild-helper-maven-plugin/add-sourceは必要ありません。ソースディレクトリが自動的に追加されます。

関連する問題