2012-10-31 35 views
1

我想爲每個構建的庫項目啓用自動Javadoc生成。我有3個問題需要解決:Android版本的自動Javadoc構建

  1. 如何在IDE的構建過程中集成這樣的自動腳本? (Eclipse和IDEA)。

  2. 如何排除來自文檔自動生成RBuild類 處理,因爲他們總是源的 命名空間下產生的。

  3. 包和地方的Javadoc旁邊構建jar文件罐。

這個問題有點寬泛,但我相信在一個地方一個很好的綜合答案將節省很多麻煩。

回答

5

兩種方式:

  • 使用Maven:Maven是偉大的,並且有Android的構建支持了。但仍然使用默認的Android結構,所有東西都不像輕量級的默認Ant版本那樣工作。我希望將來谷歌引入Maven結構。
  • 好老Apache Ant:默認的Ant構建文件位於sdk_path/tools/ant/build.xml,這是導入到項目的build xml。因此可以爲一些額外的工作添加自定義目標。放置它們的最佳位置是在項目根目錄下的custom_rules.xml文件中,並在項目的build.xml中導入。

custom_rules.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project name="MyProject" default="help"> 

    <!-- IDE produces default jar as: out/production/classes.jar , 
    so we define a custom target to rename the jar, generate and package docs jar along 
    with it --> 
    <target name="package_library" depends="init_pack_lib, check_lib_jar, rename_lib_jar,generate_javadoc"/> 

    <!-- init all properties to use--> 
    <target name="init_pack_lib"> 
     <property name="real.out.dir" value="${basedir}/out/production"/> 
     <property name="lib.gen.jar.file" value="${real.out.dir}/classes.jar"/> 
     <property name="docs.dir" value="${real.out.dir}/Docs"/> 

     <!-- we need to peek into manifest xml file--> 
     <xmlproperty file="${manifest.abs.file}" collapseattributes="true"/> 
     <property name="app.package" value="${manifest.package}"/> 
     <property name="app.dist.name" value="${ant.project.name}_${manifest.android:versionName}"/> 
     <property name="doc.package.names" value="${app.package}.*"/> 
    </target> 

    <!-- is classes.jar generated ?--> 
    <target name="check_lib_jar"> 
     <available file="${lib.gen.jar.file}" property="lib.jar.found"/> 
    </target> 

    <!-- if so, give it a better name--> 
    <target name="rename_lib_jar" if="${lib.jar.found}"> 
     <move file="${lib.gen.jar.file}" 
       tofile="${real.out.dir}/${app.dist.name}.jar"/> 
    </target> 

    <!-- generate and package JavaDoc for project--> 
    <target name="generate_javadoc" depends="check_doc_dir, create_doc_dir, clean_docs_dir"> 
     <javadoc packagenames="${doc.package.names}" 
       sourcepath="${source.absolute.dir}" 
       destdir="${docs.dir}" 
       verbose="false" 
       /> 
     <jar compress="${jar.compress}" basedir="${docs.dir}" jarfile="${real.out.dir}/${app.dist.name}_JavaDoc.jar"/> 
    </target> 

    <!-- what about JavaDocs destination directory ? --> 
    <target name="check_doc_dir"> 
     <condition property="docs.dir.not.exists"> 
      <not> 
       <available type="dir" file="${docs.dir}" property="docs.dir.exists"/> 
      </not> 
     </condition> 
    </target> 

    <!-- make docs directory if it isn't there already--> 
    <target name="create_doc_dir" if="docs.dir.not.exists"> 
     <mkdir dir="${docs.dir}"/> 
    </target> 

    <!-- wipe previous JavaDocs files--> 
    <target name="clean_docs_dir" if="docs.dir.exists"> 
     <delete includeemptydirs="true"> 
      <fileset dir="${docs.dir}" includes="**/*"/> 
     </delete> 
    </target> 
</project> 

要創建包,只需從項目的根目錄下運行ant package_library。您可以將這些包含在構建目標中,以便在每個構建中運行。

+0

夥計 - 這真了不起。你需要更多的功勞。不能相信沒有關於在線的更多信息。謝謝! – sarfata