Ôn tập nhanh Trong phần 1 của loạt bài này, Tài liệu tham chiếu Java API được tổ chức trong trợ giúp Eclipse như thế nào bài viết mô tả các cách tiếp cận khác nhau để tạo ra tài liệu t
Trang 1Tài liệu tham chiếu Java API
Phần 3: Cấu trúc tham chiếu Eclipse Javadoc API được tạo ra thông qua việc chạy JavaTOC doclet và ANT
Mariana Alupului, Phát triển Thông tin, Rational software, IBM
Tóm tắt: Bài viết này bàn thêm về JavaTOC doclet, cách sử dụng và mở rộng nó
Các cách tiếp cận được mô tả là giải pháp chuẩn Javadoc và sử dụng công cụ để tạo ra hệ trợ giúp trình bổ sung Eclipse Tôi sẽ chạy JavaTOC doclet trong Eclipse thông qua thủ thuật Custom doclet, và thứ hai thông qua hệ thống xây dựng Ant Công cụ JavaTOC tạo ra định hướng XML mục lục cho tài liệu tham chiếu Java API
Ôn tập nhanh
Trong phần 1 của loạt bài này, Tài liệu tham chiếu Java API được tổ chức
trong trợ giúp Eclipse như thế nào bài viết mô tả các cách tiếp cận khác nhau để
tạo ra tài liệu tham chiếu giao diện lập trình ứng dụng (API) Java dễ sử dụng và có thể tìm kiếm được Các cách tiếp cận được mô tả trong bài viết là giải pháp chuẩn Javadoc và sử dụng JavaTOC doclet tôi đã phát triển để tạo ra hệ trợ giúp trình bổ sung Eclipse
Trong phần 2 của loạt bài này, Sử dụng JavaTOC doclet để tạo cấu trúc tham
chiếu Eclipse Javadoc API bài viết trình bày về JavaTOC doclet (bao gồm cả
việc tải dữ liệu về) và cách dùng Command Prompt (giao diện dòng lệnh) để sử dụng JavaTOC doclet Bài viết mô tả cách JavaTOC doclet tạo ra định hướng mục lục XML và khả năng tìm kiếm nâng cao cho tài liệu tham chiếu Javadoc API
Học cách yêu cầu lập trình viên trợ giúp mà không quan tâm đến việc các kỹ năng
kĩ thuật của bạn giỏi đến mức nào Ở đây có các chủ đề đã được các lập trình viên đúc rút ra, các chủ đề này đáng để giải thích và cân nhắc thêm, đây là các chủ đề không được người dùng yêu cầu và sử dụng
Sử dụng JavaTOC doclet để sinh trình bổ sung Eclipse (tài liệu tham chiếu
Javadoc API)
Hệ thống trợ giúp nền Eclipse cho phép bạn sử dụng điểm mở rộng
org.eclipse.help.contributions để đóng góp trình bổ sung của mình vào trợ giúp trực tuyến Bạn có thể đóng góp trợ giúp trực tuyến như là một phần của trình bổ sung mã của bạn hoặc cũng có thể cung cấp nó một cách độc lập trong trình bổ sung tài liệu của chính nó Việc có trình bổ sung tài liệu của riêng bạn đem lại lợi
Trang 2ích trong việc làm việc với bản sao của mã nguồn và quá trình sinh tham chiếu độc lập với quá trình phát triển Có thể có lợi khi cân nhắc đến cách tiếp cận này trong các tình huống như vậy, khi mà đội phát triển khác với đội làm tài liệu hoặc khi bạn muốn giảm độ phụ thuộc giữa nguồn tài liệu và mã nguồn
Điểm mở rộng org.eclipse.help.contributions cung cấp bốn phần tử, qua các phần
tử này bạn có thể đóng góp các trợ giúp của mình: tập thông tin các chủ đề (sách), các hành động xem thông tin (lưới) Các đóng góp tập thông tin hoặc hành động chỉ ra một tệp xml liên kết, tệp này chứa các chi tiết của việc đóng góp
chuẩn Javadoc Generation wizard để tạo ra Javadoc cho tài liệu tham chiếu Java
API và JavaTOC doclet cho các tệp định hướng XML mục lục trong môi trường phát triển Eclipse
Bài viết này trình bày cách chạy JavaTOC doclet trong Eclipse thông qua thủ thuật Custom doclet, và thứ hai thông qua hệ thống xây dựng Ant Nếu bạn chưa từng làm việc với Ant, hãy xem ở trang Web Jakarta, hoặc "Open Source Java: Ant" (Mã nguồn mở Java: Ant)
Luồng công việc
Thêm các công cụ tạo trình bổ sung JavaTOC (JavaAPITools) vào không gian làm việc của bạn:
Hãy tìm thư mục không gian làm việc mà phiên bản Eclipse của bạn sử dụng Thông thường thì thư mục này được đặt trong thư mục mà trong đó
Eclipse đã được cài đặt trong một thư mục con có tên gọi là "workspace"
Nếu bạn đang sử dụng đường dẫn tắt hoặc kịch bản để gọi Eclipse, thì nó sẽ
ở trong thư mục làm việc hiện tại mà đường dẫn tắt hay kịch bản của thư mục đó ở trong một thư mục con có tên gọi là "workspace"
Tải về và giải nén gói đó (JavaAPITools) vào không gian làm việc của bạn Việc này sẽ tạo ra dự án "JavaAPITools"
Trang 3 Nạp dự án "JavaAPITools" và dự án Java mà bạn muốn làm việc với vào
không gian làm việc Eclipse của bạn
Sử dụng thủ thuật nạp vào (Import Wizard) để nạp một dự án Java đã có sẵn vào không gian làm việc Với ví dụ ở đây, tôi đã tạo ra một dự án Java mới
"org.dita.dost" và thêm vào mã nguồn (thư mục src) từ mã nguồn DITA Open Toolkit , mã nguồn này biến đổi nội dung DITA (các ánh xạ và chủ đề) thành các
định dạng có thể phát được Bạn có thể tải trình bổ sung này về từ các nguồn tải
Chọn Javadoc và nhấn Next Cửa sổ Generate Javadoc mở ra
Trong cửa sổ Generate Javadoc chọn các gói mà bạn muốn xuất sang tệp
JAR Danh sách này được khởi tạo bằng việc chọn workbench Mỗi lần chỉ được chọn một dự án bởi vì khi chạy công cụ Javadoc, mỗi lần chỉ được sử dụng một đường dẫn lớp dự án (Hình 1)
Chọn tính hiển thị các thành viên (thông thường Package và Public)
Chọn Sử dụng Doclet chuẩn để bắt đầu lệnh Javadoc với doclet chuẩn
(ngầm định)
o Destination: chọn đích mà doclet chuẩn sẽ viết tài liệu được sinh ra
vào đó Đích là một đối số riêng cho doclet và vì vậy nó không được kích hoạt khi sử dụng doclet tùy biến
Đích mà doclet chuẩn sẽ viết vào có thể ví dụ là
"doc.dita.dost.doc\topics" (Hình 2)
Hình 1 Thủ thuật sinh Javadoc (Doclet chuẩn)
Trang 4Hình 2 Đích
Trang 5Bảng các tùy chọn trợ giúp được cung cấp bởi thủ thuật sinh Javadoc:
Tiêu đề tài liệu Chỉ ra một tiêu đề tài liệu
Generate use page
(sinh ra trang sử
dụng)
Chọn tùy chọn này nếu bạn muốn tài liệu chứa một Use page (trang sử dụng)
Generate hierarchy
tree (sinh ra cây
Chọn tùy chọn này nếu bạn muốn tài liệu chứa một Tree
Trang 6thứ bậc) page (trang cây)
@version
Chọn tùy chọn này nếu bạn muốn thẻ @version được làm tài liệu
@deprecated
Chọn tùy chọn này nếu bạn muốn thẻ @deprecated được làm tài liệu, tham chiếu đến một mục lục, ví dụ như
Trang 7@deprecated được chọn
Chọn các lớp tham
chiếu mà Javadoc
cần tạo liên kết tới
Chỉ ra là Javadoc cần tạo liên kết tới tài liệu nào khác khi mà các kiểu khác được tham chiếu
Chọn tất cả: Tạo liên kết tới tất cả các vùng tài liệu khác
Xóa tất cả: Không tạo liên kết tới các vùng tài liệu khác
Định cấu hình: Định cấu hình vùng Javadoc của JAR tham chiếu hoặc dự
án
Style sheet (trang
Nhấn Finish để tạo Javadoc, hoặc nhấn Next để chỉ ra thêm các tùy chọn
sinh Javadoc
GHI CHÚ: Để biết thêm chi tiết hãy xem Javadoc generation — Eclipse Help
Platform (Sinh Javadoc - Nền trợ giúp Eclipse)
Thư mục đích của các tệp đầu ra
Doclet sinh ra các tệp HTML đầu ra cho tài liệu trình bổ sung tại
"org.dita.dost\org.dita.dost.doc\topics\", bây giờ đây chính là thư mục tài
liệu trình bổ sung của bạn
Trang 8
Tạo định hướng XML mục lục và các tệp trình bổ sung Javadoc thông qua việc sử dụng thủ thuật sinh Eclipse Javadoc và JavaTOC doclet (Doclet tùy biến)
Các bước sau đây thể hiện cách sử dụng doclet tùy biến, JavaTOC doclet, kết hợp
với Javadoc trong môi trường phát triển Eclipse:
Trong Eclipse, ở khung phía bên trái, chọn trình bổ sung mã nguồn mà cần sinh Javadoc cho nó
Nhấn chuột phải tại trình bổ sung đã chọn, và chọn Export từ danh sách thả xuống Cửa sổ Export sẽ mở ra
Chọn Javadoc và nhấn Next Cửa sổ Generate Javadoc sẽ mở ra
Trong cửa sổ Generate Javadoc chọn các gói mà bạn muốn xuất sang tệp
JAR Danh sách này khởi tạo bằng việc chọn workbench Mỗi lần chỉ có thể chọn một dự án bởi vì khi chạy công cụ Javadoc, mỗi lần chỉ có thể sử dụng một đường dẫn lớp dự án
Chọn tính hiển thị của thành viên (thông thường Package và Public)
Chọn Use Custom Doclet (Sử dụng doclet tùy biến) và thêm các tên kiểu
doclet đủ tiêu chuẩn vào tên Doclet:
o Destination: chọn đích mà doclet chuẩn sẽ viết tài liệu được sinh ra
vào đó Đích là một đối số riêng của doclet và vì vậy nó không được kích hoạt khi sử dụng doclet tùy biến
Đích mà doclet chuẩn sẽ viết vào có thể được ví dụ là
"doc.dita.dost.doc\topics"
Nhấn Next
Hình 3 Thủ thuật sinh Javadoc (Doclet tùy biến)
Trang 10Hình 4 Đích
Các tùy chọn Javadoc mở rộng
Với các tùy chọn Javadoc mở rộng (các tên đường dẫn với các khoảng cách trắng phải được đặt trong các dấu nháy); thêm nội dung từ ví dụ 1 (với ví
dụ của chúng ta là trình bổ sung org.dita.dost)
1 -d <destination_directory> Chỉ ra thư mục đích cho tài liệu được
sinh ra Theo ngầm định thì nó là thư mục hiện tại (thư mục được thiết kế bởi tên đường dẫn ".")
2 -pluginid <plugin_id> Bao gồm chỉ số của trang chỉ số trình bổ
Trang 115 —version <plugin_version> Chỉ ra các chi tiết chỉ số phiên bản
trình bổ sung
6 -provider <plugin_provider> Chỉ ra các chi tiết tên nhà cung cấp
trình bổ sung
7 -anchor <file> Việc liên kết được chỉ ra bằng cách sử dụng các
tham chiếu có đầy đủ điều kiện tới một mục lục, ví dụ như:
Thư mục đích cho các tệp đầu ra
Doclet tạo ra các tệp XML mục lục đầu ra cho trình bổ sung, và một số các
tệp hữu dụng khác trong thư mục org.dita.dost\org.dita.dost.doc\, hiện
nay đó chính là thư mục trình bổ sung của bạn Các tệp được tạo ra bởi JavaTOC doclet là:
o plugin.xml
o plugin.properties
Trang 12Mục đích chính của JavaAPITools là tạo ra trình bổ sung NEW
DOCUMENTATION (Tài liệu mới) với Javadoc cho tài liệu tham chiếu API
công khai và tất cả các tệp trình bổ sung Eclipse cần thiết để tích hợp tài liệu tham chiếu Java API này với hệ trợ giúp Eclipse, ngoại trừ các tệp định hướng XML mục lục cho Javadoc
Cài đặt các công cụ xây dựng trình bổ sung (buildAPITools)
Gói JavaAPITools cung cấp kịch bản xây dựng Eclipse cho việc tạo các trình bổ sung tài liệu Eclipse Kịch bản cho phép bạn chuyển đổi các trình bổ sung dự án Java trong Eclipse và sử dụng thời gian chạy theo mục tiêu đặt ra của Eclipse để kiểm tra chúng Hoàn thành việc tạo ra Javadoc bằng cách tạo ra một kịch bản ANT trong trình bổ sung của bạn có tên gọi là build.xm Kịch bản ANT này yêu cầu các công cụ xây dựng build.xml JavaAPITools phải được đặt đâu đó trong hệ thống phát triển (không gian làm việc) của bạn Kịch bản đó cũng phải có thể xác định được cách trình bổ sung xxx.doc kết quả được đóng gói để triển khai
Trang 13 Tải gói đó về, tạo dự án 'JavaAPITools' trong không gian làm việc của bạn,
và giải nén gói đó vào dự án
Nạp các trình bổ sung mà bạn muốn làm việc với vào trong không gian làm việc Eclipse của bạn Trong ví dụ này tôi đã tạo ra một dự án Java mới và
đã thêm thư mục src thư mục nguồn từ mã nguồn DITA Open Toolkit mã
nguồn này biến đổi nội dung DITA (các ánh xạ và chủ đề) thành các định dạng có thể phát được Bạn có thể tải về trình bổ sung này từ các nguồn tải
về, hoặc bạn có thể chạy trên ví dụ dự án của mình
Xác định việc đóng gói triển khai trình bổ sung
Các phiên bản trước Eclipse 3.2, Javadoc sinh ra sẽ được lưu trong một tệp doc.zip cùng với các tệp HTML Kể từ phiên bản 3.2, toàn bộ các trình bổ sung tài liệu có thể được đưa vào một tệp jar đơn, tệp này chứa tất cả các tệp sẽ được đưa vào tệp doc.zip, cùng với các tệp trình bổ sung Eclipse: manifest.mf, plugin.xml,
plugin.properties, v.v
Kể từ Eclipse 3.1, các trình bổ sung có thể được triển khai như là một thư mục chứa các tệp riêng rẽ (bao gồm một hoặc nhiều các tệp jar) hoặc nó cũng có thể được triển khai như là một tệp jar đơn
Trang 14Tạo, quản lý và chạy tệp xây dựng ANT
Nhấn chuột phải build.xml từ builAPITools và chọn Run As > External
Tools, và trong phần Builders chọn New Lunch Configuration và tạo ra
một cấu hình xây dựng Ant mới
Trong hộp thoại cấu hình kết quả, đặt tên là một cái gì đó duy nhất (ví dụ Build Plugin Documentation) Trong thẻ Main của phần tải cấu hình, duyệt
không gian làm việc và chọn tệp build.xml từ JavaAPITools) Thêm vào
thư mục Base giá trị: ${project_loc}
Sơ đồ sau đây, hình 5, thể hiện thẻ Main của hộp thoại cấu hình tải ANT
Trang 15Hình 5 Cài đặt để chạy tệp xây dựng ANT
Các đối số:
o Đối số —verbose cho phép bạn lần theo thông tin về một lệnh cụ thể hiện đang không làm việc Đối số —quiet chặn lại hầu hết các thông
điệp không bắt nguồn từ nhiệm vụ báo hiệu trong tệp đã xây dựng
sẵn, và -debug, in ra các thông tin sửa lỗi trong bảng điều khiển
Eclipse
o Đối số —Dbuild.toc.tree=true ghi đè thuộc tính —build.toc.tree
và gán giá trị là true trước khi kịch bản xây dựng được thực hiện
Việc này sẽ chỉ tạo một tệp XML mục lục chính (xxx.toc.xml) thay
vì nhiều tệp
Tạo tệp ANT build.xml
Kịch bản build.xml định nghĩa tất cả các thông tin cần thiết để tạo ra Javadoc cho
các trình bổ sung thành phần kết hợp và tạo ra tệp doc.zip hoặc sao chép các tệp đã được tạo ra vào gốc của trình bổ sung Để hoàn thành tài liệu về các nhiệm vụ sẽ
Trang 16được sử dụng trong tệp này hãy xem JavaAPITools/build.xml
Nội dung khởi tạo cho tệp này sẽ là:
<project name="build" default="main">
<echo message="${ant.project.name}: ${ant.file}"/>
Trang 17>
<target name="main"
depends="setup, useManifestMF, usePluginXML, badPlugin, runJavaDoc, runJavaTOCDoclet,
deployPlugin, copyPlugin, cleanProject"
description="Build Plug-in Documentation">
<echo message="${ant.project.name}: ${ant.file}"/>
useManifestMF, usePluginXML, badplugin, runJavaDoc, runJavaTOCDoclet, generateZip, copyPlugin, cleanProject)
<target name="init" description="Project variables">
Trang 18<property name="ECLIPSE_HOME" value=" / /"/>
<property name="build.plugin" value="jar"/>
<property name="project.dir" value="${basedir}" />
<property name="build.toc.tree" value="false" />
<echo>=== Starting Building Plugin Documentation ===</echo>
<echo>=== ${now} ===</echo>
</target>
Lời bình:
Tệp xây dựng Ant cung cấp truy cập tới tất cả các thuộc tính hệ thống như thể là
chúng đã được định nghĩa thông qua việc dùng một <property> task
<target name="validatePlugin" description="Select plugin.xml or manifest.mf">
<condition property="plugin.xml.exists">
Trang 20description="Get plugin name from MANIFEST.MF ">
<replacestring from=";" to=".doc" />
<replacestring from=" " to="" />
<replacestring from="singleton:=true" to="" />
</filterchain>
</loadproperties>
<property name="plugin.name" value="${Bundle-SymbolicName}" />
<loadproperties srcFile="${project.dir}\META-INF/MANIFEST.MF"/>
<property name="bundle.name" value="${Bundle-Name}" />
<property name="version.name" value="${Bundle-Version}" />
<property name="vendor.name" value="${Bundle-Vendor}" />
</target>
<target name="usePluginXML"
depends="validatePlugin"
if="plugin.xml.exists"
Trang 21unless="manifest.mf.exists"
description="Get plugin name from plugin.xml
if MANIFEST.MF does not exist ">
<xmlproperty file="${project.dir}\plugin.xml" />
<property name="plugin.name" value="${plugin(id)}.doc" />
<property name="bundle.name" value="${plugin(bundle-name)}" />
<property name="version.name" value="${plugin(bundle-version)}" />
<property name="vendor.name" value="${plugin(bundle-vendor)}" />
</target>
<target name="badPlugin"
depends="validatePlugin"
if="invalid.plugin"
description="Processing ends if plugin is invalid ">
<fail message="ERROR::Plugin ${project.dir} is invalid
No plugin.xml was found." />
</target>
Lời bình:
Tệp xây dựng Ant cung cấp truy cập tới tệp MANIFEST.MF hoặc/và tới tệpplugin.xml,
và sử dụng tên, chỉ số, tên phiên bản và tên nhà cung cấp của trình bổ sung có sẵn từ
trình bổ sung Java có sẵn
Lỗi sẽ xuất hiện trong bảng điều khiển của bạn
nếu như không có tệp plugin.xml hay MANIFEST.MF nào được tìm thấy