3

私の質問は、javadoc:javadoc を実行したい 1 つを除くすべてのプロジェクトに対して javadoc:aggregate を実行したいということから来ています (この 1 つのプロジェクトには、その maven-javadoc-plugin 構成で sourcepath 設定を使用する必要があるサブモジュールがあるため、ソースだけでなくコードも生成されているため)。

そして、私が理解しているように、集約目標を実行すると sourcepath 設定が無視されるというバグがあります。私はそれを自分で試してみましたが、うまくいきませんでした。

プラグイン構成を定義する親 POM があります。

<properties>
  <javadoc-goal>aggregate</javadoc-goal>
<properties>

すなわち

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <executions>
    <execution>
      <id>generate-javadoc</id>
      <phase>package</phase>
      <goals>
        <goal>${javadoc-goal}</goal>
      </goals>
      <configuration>
         ...
      </configuration>
    </execution>
  </executions>
</plugin>

次に、このプロジェクトを継承するいくつかのプロジェクトがあります。集約の代わりに javadoc を実行する必要がある場合は、次のように定義します。

<javadoc-goal>javadoc</javadoc-goal>

そしてそのサブモジュールはそのソースパスを定義します:

<reporting>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
        <configuration>
          <sourcepath>${basedir}/src/main/java:${basedir}/src/generated/java</sourcepath>
        </configuration>

        ... 
    </plugin>
  </plugins>
</reporting>

親POMをインストールしようとすると、変数をリテラルとして扱っているように見えるため、私の質問に対する答えはノーだと思います。他の多くの場所で変数を使用できるため、奇妙に感じました。

[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] '${javadoc-goal}' was specified in an execution, but not found in the plugin

これができない場合、この問題を回避するためのアイデアはありますか?

4

1 に答える 1

0

これは私が思いついた解決策です:

親POMでjavadocプラグインを構成しますが、目標を提供しないでください。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <executions>
    <execution>
      <id>generate-javadoc</id>
      <phase>package</phase>
      <configuration>
         ...
      </configuration>
    </execution>
  </executions>
</plugin>

各プロジェクトのPOMは、次の目標を提供します。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <executions>
    <execution>
      <id>generate-javadoc</id>
      <phase>package</phase>
      <goals>
        <goal>javadoc</goal> <!-- or aggregate for those projects that require it -->
      </goals>
    </execution>
  </executions>
</plugin>
于 2012-07-05T03:54:00.323 に答える