Подтвердить что ты не робот

Как создать агрегированный скалядок для сайта 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-типов jar-типа.

Я также попытался установить forceAggregate на true, но это тоже не повлияло.

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

4b9b3361

Ответ 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>