5

専用のdocs-project内から、プロジェクトの特定のアーティファクトに対してのみjavadocsを生成したいと思います。

つまり、たとえば「docs」という独立したプロジェクトが欲しいということです。docs / pom.xmlで、生成されたjavadocsに含める必要のあるアーティファクトを定義したいと思います。

これまでのところ、含めたいプロジェクト用に別のsources.jarを生成する必要があることを学びました。しかし、そこから先に進む方法がわかりません。

今のところ、私は2つのアプローチしか想像できません。

  1. 含めたいアーティファクト(sources.jar)を取得し、それらを解凍して、Javadocプラグインをソースディレクトリにポイントします。

  2. 関心のあるアーティファクトを依存関係として定義し、javadoc-pluginの「dependencySourceInclude」オプションを使用します。しかし、これが意図したとおりの使用法であるかどうかはわかりません。

この問題を解決する方法について何か提案はありますか?

4

1 に答える 1

7

私は自分自身で解決策を見つけました。ちょっとしたハックですが、私にとってはうまくいきます。私は私の最初のアイデアで行くことを選びました:

含めたいアーティファクト(sources.jar)を取得し、それらを解凍して、javadocプラグインをソースディレクトリにポイントします。

このソリューションには4つの異なる部分があり、後で詳しく説明します。

  1. 含めたいすべてのアーティファクトにsources.jarsを生成します
  2. それらのsources.jarsを解凍します
  3. 解凍されたソースをjavadoc-pluginにポイントしてJavadocを生成します
  4. 生成されたapidocsをzipファイルにパッケージ化します

今より詳細に:

1.含めたいすべてのアーティファクトにsources.jarsを生成します

sources.jarを生成するには、次のようにmaven-sources-pluginを使用する必要があります。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-source-plugin</artifactId>
      <version>2.1.2</version>
      <executions>
        <execution>
          <id>bundle-sources</id>
          <phase>package</phase>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

apidocsに含めるすべてのプロジェクト/モジュール/アーティファクトでこれを行う必要があります。

2.それらのsources.jarsを解凍します

javadocsを生成するために使用するpom.xmlで、sources.jarファイルを解凍するために次のプラグインを追加する必要があります。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>unpack-artifact-sources</id>
      <phase>generate-resources</phase>
      <goals>
        <goal>unpack</goal>
      </goals>
      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>${project.groupId}</groupId>
            <artifactId><!-- your artifact here --></artifactId>
            <version>${project.version}</version>
            <classifier>sources</classifier>
            <overWrite>true</overWrite>
          </artifactItem>
        </artifactItems>
        <outputDirectory>${project.build.directory}/unpack_sources</outputDirectory>
      </configuration>
    </execution>
    <!-- add more unpack-executions here -->
  </executions>
</plugin>

unpack-execution-blockはいくつでも追加できます。

3. javadoc-pluginを解凍されたソースにポイントして、Javadocを生成します

今トリッキーな部分。javadoc-pluginにソースファイルを探す場所を知らせます。インポートされた定義が<sourcepath>定義です。このセクションでは、ステップ2でソースを解凍したフォルダーを定義します。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-javadoc-plugin</artifactId>
  <version>2.7</version>
  <configuration>
    <sourcepath>${project.build.directory}/unpack_sources</sourcepath>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>javadoc</goal>
      </goals>
      <phase>process-resources</phase>
    </execution>
  </executions>
</plugin>

mvn clean installこの時点で電話をかけると、siteフォルダ内にtargetフォルダができあがります。このサイトフォルダには、apidocsがあります。しかし、このビルドをすべて光沢のあるものにするために、apidocsをzipアーカイブにアセンブルしたいと思います。

4.生成されたapidocsをzipファイルにパッケージ化します

ドキュメントをアセンブルするには、maven-assembly-pluginと追加のアセンブリファイルを使用する必要があります。まず、pom内のプラグイン定義:

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <executions>
    <execution>
      <id>docs-assembly</id>
      <phase>package</phase>
      <configuration>
        <appendAssemblyId>false</appendAssemblyId>
        <descriptors>
          <descriptor>src/main/assembly/assemble.xml</descriptor>
        </descriptors>
      </configuration>
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>

assemble.xml:

<?xml version="1.0" encoding="UTF-8"?>
<assembly>
  <id>${project.build.finalName}</id>
  <formats>
    <format>zip</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <fileSets>
    <fileSet>
      <directory>target/site/apidocs</directory>
      <outputDirectory>/</outputDirectory>
    </fileSet>
  </fileSets>
</assembly>
于 2011-02-10T09:05:26.560 に答える