<head>
生成した Javadoc HTML に要素を含めたい:
<link rel="shortcut icon" href="my-project-icon.ico" />
Ant タスクを使用して Javadoc を生成していることに注意してください。
Ant タスクの要素を使用しようとしました<header>
が、そこに配置されたマークアップは<h1>
タグ内に配置されてしまい、これは無効であるため、ブラウザーによって無視されます。
簡単なブルート フォース ソリューションとして、出力ファイルを間違いなく変更します。しかし、洗練された方法は、カスタム ドックレットを使用することです。このドックレットは、標準ドックレットのコピーになります (現在のリリース (1.5 または 1.6) の標準 JavaDoc ドックレットのソースはどこからダウンロードできますか)。
にHtmlDocletWriter.java
は多くの行がありますhead.addContent
。おそらく に基づいて、そのような行をもう 1 つ追加しHtmlTree.LINK
ます。
マーカスのソリューションは良いスタートです。提供してくれてありがとう!
ただし、いくつかの問題があります。
*.html
。<head>
ん<HEAD>
。これらの問題を修正したバージョンを次に示します。拡張版はhtml-toolsリポジトリにあります。問題を見つけた場合、または改善を提案したい場合は、ここにコメントするか、html-tools issue tracker を使用してください。
#!/bin/sh
# Add favicon to header of HTML files.
# One use case is for javadoc-generated API documentation.
#
# Run like this:
# add-favicon <directory> <favicon.png>
# The arguments should be paths relative to the current working directory.
# Once this has been run, running it another time has no effect.
patchIt () {
for f in $1/*.html ; do
if [ -f "$f" ]; then # if no .html files exist, f is literal "*.html"
tmpfile=`mktemp patch_favicon_XXXXX`
# This creates tmpfile, with the same permissions as $f.
# The next command will overwrite it but preserve the permissions.
# Hat tip to http://superuser.com/questions/170226/standard-way-to-duplicate-a-files-permissions for this trick.
\cp -p $f $tmpfile
sed -e " s%<head>\$%<head><link rel=\"icon\" href=\"$2\" type=\"image/png\"/>%" $f > $tmpfile
mv -f $tmpfile $f
fi;
done ;
for d in $1/* ; do
if [ -d $d ]; then echo "descending to "$d ; patchIt $d ../$2 ; fi ;
done
}
patchIt $1 $2
#eof
次の bash/sed スクリプトを使用して、「ブルート フォース」アプローチを採用しています。
(注意してください、javadoc は、作成されたディレクトリに「*.html」と呼ばれる醜いファイルをいくつか作成します。sed がそれらを処理しようとすると、エラー メッセージが表示されます。これを回避する方法はまだわかっていませんが、私たちの目的には無害です!-)
もちろん、xslt スクリプトの方がより専門的ですが...
#!/bin/sh
# patch favicon into header of javadoc generated api doc html
#
# assume started with P=`pwd` , then the args must be
# 1 directory to process / full path relative to $P
# 2 favicon filename to insert / full path relative to $P
function patchIt () {
for f in $1/*.html ; do
tmpfile=`mktemp -p . `
sed -e " s%<HEAD>%<HEAD><link rel=\"icon\" href=\"$2\" type=\"image/png\"/>%" \
$f > $tmpfile ; mv $tmpfile $f ;
done ;
for d in $1/* ; do
if [ -d $d ]; then echo "descending to "$d ; patchIt $d ../$2 ; fi ;
done
}
patchIt $1 $2
#eof