0

我想使用聚合目标为我的整个项目生成 javadoc,但我也想为几个子项目生成 javadoc jar。在我的父 pom.xml 中,我添加了以下 pluginManagement 以允许子项目轻松生成 javadoc jar:

<project>
  ...
  <build>
    <pluginManagement>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9</version>
        <executions>
          <execution>
            <goals>
              <goal>jar</goal>
            </goals>
            ...

然后在需要 javadoc jar 的子项目中添加:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
        </plugin>
        ...

到目前为止,一切都很好。现在我想使用聚合目标来获得一整套 javadoc,所以我在父 pom 中添加了对 javadoc 插件的另一个引用:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>aggregate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...

这会导致 javadoc 插件被拉入每个子项目,而不仅仅是少数需要它的子项目。jar 和 aggregate 目标似乎独立运行良好,但当它们一起使用时,它们会导致问题。有人解决了这样的问题吗?

提前致谢!

4

1 回答 1

1

我通过做类似的事情弄清楚了:我可以在 pluginManagement 中配置多个插件执行,并在我的子 POM 中选择它们吗?基本上,我在 javadoc jar 实例中添加了执行和无阶段的 id。然后我覆盖了这个阶段,只将需要 javadoc jar 的子项目打包。这是父 pom 中的 pluginManagement:

<project>
  ...
  <build>
    <pluginManagement>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9.1</version>
          <executions>
            <execution>
              <id>javadoc-jar</id>
              <phase>none</phase>
              <goals>
                <goal>jar</goal>
              </goals>
              ...

然后在需要的子项目pom中打开javadoc jar:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-javadoc-plugin</artifactId>
        <executions>
          <execution>
            <id>javadoc-jar</id>
            <phase>package</phase>
          </execution>
        </executions>
      </plugin>
      ...
于 2013-12-02T18:54:29.490 回答