10

私は、製品のAPI SDKを含むjarファイルを生成しようとしています。これにより、お客様はプラグインを作成して、APIに対してコンパイルできます。API SDK jarの一部として提供するすべてのクラス/インターフェースもメイン製品に含まれているため、API開発者はAPISDKjarをプラグインjarに含める必要はありません。したがって、APISDKjarのサイズについては心配していません。ただし、プラグイン開発者の作業を楽にし、コンパイルされたクラスとjavadocの両方を含む1つのjarファイルを提供したいと思います(開発者は、開発時にオートコンプリート機能の一部としてインラインコメントを表示できます)。

Mavenを使用してコンパイルし、APISDKpom.xmlに次の構成を追加しました。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.7</version>
            <executions>
                <execution>
                    <id>attach-javadoc</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

これは機能しますが、2つのjarファイルが生成されます。1つはコンパイル済みクラスを含み、もう1つはjavadocを含みます。代わりに、すべてを含むjarファイルを1つだけ生成したいと思います。

現在、このプロジェクトのコンパイルにはMavenを使用していますが、他のビルドツールを自由に使用できます。

4

3 に答える 3

5

あなたはこれを行うことができます :

  • javadocの目標をprepareパッケージに添付します
  • ターゲット/クラスにjavadoc出力ディレクトリを指定します

jarプラグインは、ターゲット/クラス内のすべて(生成されたjavadocを含む)を含むjarを作成します

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.7</version>
            <executions>
                <execution>
                    <id>attach-javadoc</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>javadoc</goal>
                    </goals>
                    <configuration>
                        <reportOutputDirectory>${project.build.directory}/classes/</reportOutputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
于 2013-02-20T21:12:20.600 に答える
2

アセンブリプラグインを見たことがありますか?

アセンブリプラグインは、jar形式のアセンブリ(実際にはMANIFEST.MFファイルを含むzip形式のアセンブリ)を作成できます。アセンブリでclassesディレクトリとapidocsディレクトリの両方を指定できます。そこにMANIFEST.MFを貼り付ければ、完了です。

幸い、javadoc:javadoc目標は、フェーズのセクションで構成することにより、ビルドライフサイクルの一部として構成できます。つまり、生成されたJavaDocsはAssemblyプラグインで使用できる必要があります。<build>pom.xmlgenerate-sources

于 2013-02-20T21:03:05.840 に答える
1

実のところ、実際にはもっと簡単な方法で物事を行うことができます。

sourcesを使用してjarアーティファクトを作成します。maven-source-plugin

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.2.1</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

このようにして、プロジェクトはソースをアーティファクトリポジトリにデプロイします。

次に、IDEのMaven構成で、ソースアーティファクトのダウンロードをオンにするだけで、コードに適切なコメントがあれば、IDEにjavadocsが含まれるようになります。

このようにして、アーティファクトを適切に分離することもできます。

それ以外に、DavidW.とben75の答えも有効な方法です。

于 2013-02-21T10:16:26.120 に答える