Как создать агрегированный скаладок для сайта maven?

У меня есть многомодульная сборка Maven, и я хотел бы создать агрегированный Scaladoc в моем корневом модуле, аналогично тому, что делает агрегатная цель для maven-javadoc-plugin. Моя первая попытка была:

<project ...>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <configuration>
                        <reportPlugins>
                            <plugin>
                                <artifactId>maven-project-info-reports-plugin</artifactId>
                            </plugin>
                            <plugin>
                                <groupId>net.alchim31.maven</groupId>
                                <artifactId>scala-maven-plugin</artifactId>
                                <reports>
                                    <report>doc</report>
                                </reports>
                                <configuration>
                                    <aggregateDirectOnly>false</aggregateDirectOnly>
                                    <sendJavaToScalac>false</sendJavaToScalac>
                                </configuration>
                            </plugin>
                            <plugin>
                                <artifactId>maven-javadoc-plugin</artifactId>
                                <reports>
                                    <report>aggregate</report>
                                </reports>
                            </plugin>
                        </reportPlugins>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

Однако свойство aggregateDirectOnly, похоже, не оказывает никакого влияния. Я всегда получаю Scaladoc только для отдельных POM типа банок.

Я также попытался установить для ForceAggregate значение true, но это также не имело никакого эффекта.

Как это сделать?

1 ответ

Это не отвечает на вопрос в точности так, как задано, но является решением, которое на самом деле может быть предпочтительным для смешанных проектов java / scala, пока ScalaDoc не сможет анализировать комментарии JavaDoc. Он создает единый агрегированный JavaDoc, который включает документацию из всех исходных файлов Scala проекта.

Решение простое: сконфигурируйте Maven для использования плагина компилятора GenJavaDoc Scala, чтобы ScalaDocs можно было конвертировать в JavaDocs. Затем используйте обычный javadoc:aggregate цель агрегировать проект как обычно.

Вот пример профиля Maven, чтобы сделать это. Он настраивает компилятор Scala для генерации JavaDocs, соответствующих источникам Scala, настраивает Maven для обработки genjavadoc каталог, созданный компилятором Scala в качестве исходного каталога, а затем настраивает сам плагин javadoc (последний может быть необязательным, если у вас нет особых требований к конфигурации плагина JavaDoc).

<profile>
  <id>javadoc</id>
  <build>
    <plugins>
      <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>scala-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>doc</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>compile</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <args>
            <arg>-P:genjavadoc:out=${project.build.directory}/genjavadoc</arg>
          </args>
          <compilerPlugins>
            <compilerPlugin>
              <groupId>com.typesafe.genjavadoc</groupId>
              <artifactId>genjavadoc-plugin_${scala.binary.full.version}</artifactId>
              <version>0.4</version>
            </compilerPlugin>
          </compilerPlugins>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>${project.build.directory}/genjavadoc</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>2.9</version>
        <configuration>
          <minmemory>64m</minmemory>
          <maxmemory>2g</maxmemory>
          <outputDirectory>${project.build.directory}</outputDirectory>
          <detectLinks>true</detectLinks>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>
Другие вопросы по тегам