2011-10-10 4 views
10

特に私はmaven-javadoc-pluginを実行しようとしていますが、親/アグリゲータのpomとすべての子のバージョン番号を変更するときは、 javadocが最初に実行され、まだビルドされていないため、モジュールから新しいバージョンのパッケージを見つけることができないため、失敗します。Mavenプラグインの実行方法_after_すべてのモジュールビルド終了

私は通常、1つのビルドに対してjavadocをコメントアウトしてから、パッケージを新しいバージョン用のnexusで利用できるようにしてから、もう一度追加しなければなりません。しかし、これは、私がjavadocを構築してきたことを意味しています。古いソースjarを常にビルドしています。

私は別のモジュールを別のモジュールに置く提案を読んだが、私はピアモジュール用のjavadocをビルドするモジュールを得ることはできないと思う。親にすべてのモジュール用のjavadocをすべてビルドすると、後で起こるだけです。ありがとう。ここにjavadocプラグインの設定があります。この問題を回避する

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-javadoc-plugin</artifactId> 
        <inherited>false</inherited> 
        <executions> 
         <execution> 
          <id>generate-javadoc</id> 
          <phase>package</phase> 
          <goals> 
           <goal>aggregate</goal> 
          </goals> 
          <configuration> 
           <aggregate>true</aggregate> 
           <links> 
            <link>http://java.sun.com/javase/6/docs/api</link> 
            <link>http://java.sun.com/javaee/5/docs/api</link> 
           </links> 
           <maxmemory>512</maxmemory> 
           <doclet>org.umlgraph.doclet.UmlGraphDoc</doclet> 
           <docletArtifact> 
            <groupId>org.umlgraph</groupId> 
            <artifactId>doclet</artifactId> 
            <version>5.2</version> 
           </docletArtifact> 
           <additionalparam> 
            -inferrel -inferdep -outputencoding utf8 -hide 
            java.* -collpackages 
            java.util.* 
            -qualify -postfixpackage 
            -nodefontsize 9 -nodefontpackagesize 7 
           </additionalparam> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
+0

実行のためにパッケージの代わりにphase installを試してください –

+0

親/アグリゲータープロジェクトが最初に原子炉オーダーで構築され、そのモジュールのいずれかがビルドされる前にすべてのフェーズが実行されるため、インストールフェーズは役に立たないようです。したがって、最初のモジュールがビルドされる前にインストールやパッケージ化が行われているかどうかにかかわらず、javadocがビルドされていないため、モジュールに対するjavadocの依存性は満たされません。 –

答えて

0

一つの方法は、通常のMavenのライフサイクル段階でのJavadocプラグインを呼び出すためにではありません。代わりに別々に実行してください。

具体的には、上記のplugin定義から<phase>タグを削除してください。

親からの実行mvn install javadoc:javadoc

これは、すべてのモジュールと親をビルドしてインストールし、その上でjavadocを実行します。

+0

返事をありがとう、残念ながら、これは同じことではありません。上の設定では、すべてのモジュールjavadocが1つの場所にあるトップレベルのターゲットディレクトリにsite/apidocsディレクトリがあります。 もし私があなたの提案をしているのであれば、各モジュールは独自のjavadocをビルドしますが、すべてのモジュールに対してトップレベルのjavadocはありません。 –

+0

@ジョン。私は 'javadoc:javadoc'は集約しないと思います。おそらく 'javadoc:aggregate'はどうでしょうか? – Raghuram

+0

お返事ありがとうございました。それはそうですが、最上位のpomが最初に原子炉の順番で実行されるので、他のモジュールはまだ構築されておらず、javadocプラグインはそれらがすべて依存であると考えるので、必要なjarを見つけることができないと断ちます。私は、これを考えればどのように集計が動作するのか分かりません。原子炉の順序で最上位レベルを最後にする方法はありますか?最初に私がまだ構築されていないモジュールの成果物を見つけようとすると、なぜそれが必ずしも壊れないのか分かりません。 –

0

pomの<build>にjavadocプラグインの宣言がありますか? linkを参照して、<reporting>の部分に移動することを検討する必要があります。

関連する問題