1

私はPDFDocletwithmaven-javadoc-pluginを使用していますが、今ではかなり長い道のりを歩んできました。私はmavenとjavadocの構成をほぼ十分な時点で持っていますが、私の差し迫った問題は、プロジェクトのバージョン番号をPDFのタイトルページにプッシュする方法を理解できないことです。

Maven のフィルタリングを使用するように指示して私の質問に答える前に<resource>、それが機能しない理由を概説しましょう。

フィルタリングは、srcフォルダー内のどこかから元のファイルを取得し、変数置換を実行して、出力をtargetフォルダーに配置することによって機能します。

Javadoc は と でファイルを読み取りsrc/main/javasrc/main/javadocAFAIK が結果を に出力することで機能しtargetます。これは、Javadoc から何も読み取らないため、フィルタリングが役に立たないことを意味します。target

私の結果は、javadoc コメント内のどの Maven 変数も置換されないことを示しています。

これらの変数を javadoc に代入するには、どのようなトリックを使用できますか?

リソースのフィルタリングが PDF で機能しない限り、この解決策では、site:site タスクの後に javadoc 出力をフィルタリングすることはできません。

これは構成です、FWIW:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.3</version>
    <configuration>
      <show>package</show>
      <docfilessubdirs>true</docfilessubdirs>
      <tags>
        <tag>
          <name>pdfInclude</name>
          <placement>X</placement>
          <head></head>
        </tag>
      </tags>
    </configuration>
    <reportSets>
      <reportSet>
        <id>PDF</id>
        <reports>
          <report>javadoc</report>
        </reports>
        <configuration>
          <name>PDF</name>
          <description>PDF doc</description>
          <destDir>pdf</destDir>
          <doclet>com.tarsec.javadoc.pdfdoclet.PDFDoclet</doclet>
          <docletPath>${basedir}/pdfdoclet/pdfdoclet-1.0.3-all.jar</docletPath>
          <useStandardDocletOptions>false</useStandardDocletOptions>
          <additionalparam>-pdf my_tech_doc-${project.version}.pdf
            -config ${basedir}/pdfdoclet/pdfdoclet.properties</additionalparam>
        </configuration>
      </reportSet>
    </reportSets>
  </plugin>

そしてpdfdoclet.properties

    # http://pdfdoclet.sourceforge.net/configuration.html
    #
    #Lets the doclet print additional output in the console and to a logfile.
    debug=true 
    #Print "Author" tags
    author=false  
    #Print "Version" tags
    version=true
    #Print "since" tags
    tag.since=true
    #Create summary tables
    summary.table=false
    #Create hyperlinks
    create.links=true
    #Encrypt the PDF file
    encrypted=false
    #Allow printing of the PDF file
    allow.printing=true 
    #Create a bookmark frame
    create.frame=true
    #Print a title page
    api.title.page=true
    api.copyright=None
    api.author=Hansruedi
    #Enables the tag-based filter
    filter=true
    filter.tags=pdfInclude
    font.text.name=resources/arial.ttf
    page.orientation=portrait

PDFDoclet固有のapi.*プロパティにより、タイトル ページが PDF の最初のページになるはずですが、機能しません。ここで見逃したトリックがあり、そのタイトル ページを生成できた場合、これも何らかの形で解決できる可能性があります。

4

1 に答える 1

0

<resources>Maven機能を使用して、手早く汚いハックを実行できることに気付きました。

  <resource>
    <directory>${basedir}/src/main/resources</directory>
    <targetPath>${basedir}/src/main/javadoc</targetPath>
    <filtering>true</filtering>
    <includes>
      <include>**/overview.html</include>
    </includes>
  </resource>

これにより、my がコピーされてoverview.htmlフィルター処理され、javadocソース ディレクトリに出力されます。

汚いのは、このフィルタリングされたバージョンが誤ってバージョン管理下に置かれる可能性があることです。ただし、svnI を使用してリストに追加することはできignoreます。

于 2015-12-29T15:06:32.500 に答える