如何在 javadoc 概述页面中访问 maven 项目版本?
How do I access maven project version in javadoc overview page?
我正在使用 PDFDoclet
和 maven-javadoc-plugin
,现在我已经取得了很大的进步。我的 maven 和 javadoc 配置几乎已经足够好了,但我现在面临的问题是我不知道如何将项目版本号推送到 PDF 标题页中。
在您通过告诉我使用 Maven 的 <resource>
过滤来回答我的问题之前,让我概述一下为什么它不起作用。
过滤的工作原理是从 src
文件夹中的某处获取原始文件,进行变量替换并将输出放入 target
文件夹中。
Javadoc 的工作方式是读取 src/main/java
和 src/main/javadoc
中的文件,然后 AFAIK 将结果输出到 target
。这意味着过滤对 Javadoc 没有用,因为它不会从 target
中读取任何内容
我的结果显示 javadoc 注释中的任何 Maven 变量都没有被替换。
我可以使用什么技巧将这些变量替换到 javadoc 中?
解决方案不能涉及在 site:site 任务之后过滤 javadoc 输出,除非资源过滤适用于 PDF。
这是配置,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 的第一页,但它不起作用。如果我在这里错过了一个技巧并且我可以制作那个标题页,那么这也可能以某种方式提供解决方案。
我意识到我可以使用 Maven <resources>
功能进行快速而肮脏的破解:
<resource>
<directory>${basedir}/src/main/resources</directory>
<targetPath>${basedir}/src/main/javadoc</targetPath>
<filtering>true</filtering>
<includes>
<include>**/overview.html</include>
</includes>
</resource>
这会复制我的 overview.html
并对其进行过滤,将其输出到 javadoc
源目录中。
肮脏的是,这个过滤后的版本可能会意外地在版本控制下结束,尽管使用 svn
我可以将它添加到 ignore
列表中。
我正在使用 PDFDoclet
和 maven-javadoc-plugin
,现在我已经取得了很大的进步。我的 maven 和 javadoc 配置几乎已经足够好了,但我现在面临的问题是我不知道如何将项目版本号推送到 PDF 标题页中。
在您通过告诉我使用 Maven 的 <resource>
过滤来回答我的问题之前,让我概述一下为什么它不起作用。
过滤的工作原理是从 src
文件夹中的某处获取原始文件,进行变量替换并将输出放入 target
文件夹中。
Javadoc 的工作方式是读取 src/main/java
和 src/main/javadoc
中的文件,然后 AFAIK 将结果输出到 target
。这意味着过滤对 Javadoc 没有用,因为它不会从 target
我的结果显示 javadoc 注释中的任何 Maven 变量都没有被替换。
我可以使用什么技巧将这些变量替换到 javadoc 中?
解决方案不能涉及在 site:site 任务之后过滤 javadoc 输出,除非资源过滤适用于 PDF。
这是配置,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 的第一页,但它不起作用。如果我在这里错过了一个技巧并且我可以制作那个标题页,那么这也可能以某种方式提供解决方案。
我意识到我可以使用 Maven <resources>
功能进行快速而肮脏的破解:
<resource>
<directory>${basedir}/src/main/resources</directory>
<targetPath>${basedir}/src/main/javadoc</targetPath>
<filtering>true</filtering>
<includes>
<include>**/overview.html</include>
</includes>
</resource>
这会复制我的 overview.html
并对其进行过滤,将其输出到 javadoc
源目录中。
肮脏的是,这个过滤后的版本可能会意外地在版本控制下结束,尽管使用 svn
我可以将它添加到 ignore
列表中。