使用Eclipse中的ANT脚本打包多个包,javadoc和外部jar依赖项

时间:2014-01-19 02:22:32

标签: java eclipse ant

我正在建立一个图书馆。这个库里面有5个不同的包。

src
|
 ----
    |--- pkg.exceptions
    |--- pkg.a
    |--- pkg.b
    |--- pkg.c
    |--- pkg.main
libs
|
 ----someExternalJar.jar

项目设置如下 pkg.main 使用所有其他包中的类。 事实上,每个包都使用彼此的类。 我还为每个类编写了javadoc注释。 main中的一个类使用someExternalJar.jar。

我查看了不同的文章,但无法理解ANT构建脚本。

到目前为止,我已尝试使用以下构建脚本...

             编译源代码,生成JavaDocs并将应用程序打包到JAR存档中。     

<property name="srcDir1" value="src/pkg/exceptions"/>
<property name="srcDir2" value="src/pkg/a"/>
<property name="srcDir3" value="src/pkg/b"/>
<property name="srcDir4" value="src/pkg/c"/>
<property name="srcDir5" value="src/pkg/main"/>
<property name="distDir" value="/dist"/>
<property name="buildDir" value="${distDir}/build" />
<property name="docDir" value="${distDir}/docs" />
<property name="library.dir" value="/lib" />

<path id="external.classpath">
    <pathelement path="${library.dir}/someExternalJar.jar" />
</path>

<target name="clean">
    <delete dir="${buildDir}"/>
    <delete dir="${distDir}"/>        
    <delete dir="${deployDir}"/>  
</target>

<target name="init" depends="clean">
    <tstamp/>
    <mkdir dir="${buildDir}"/>
    <mkdir dir="${distDir}"/>        
    <mkdir dir="${deployDir}"/> 
    <mkdir dir="${reportDir}"/> 
</target>   

<target name="compile" depends="init">
    <javac srcdir="${srcDir1}" destdir="${buildDir}" />
    <javac srcdir="${srcDir2}" destdir="${buildDir}" />
    <javac srcdir="${srcDir3}" destdir="${buildDir}" />
    <javac srcdir="${srcDir4}" destdir="${buildDir}" />
    <javac srcdir="${srcDir5}" destdir="${buildDir}" />
</target>

<target name="doc" depends="compile">
    <javadoc packagenames="pkg.exception" sourcepath="." destdir="${docDir}" author="true" version="true" use="true" windowtitle="pkg.exception docs">
        <doctitle><![CDATA[<h1>MyAPI</h1>]]></doctitle>
        <bottom><![CDATA[<i>MyAPI</i>]]></bottom>
    </javadoc>
    <javadoc packagenames="pkg.a" sourcepath="." destdir="${docDir}" author="true" version="true" use="true" windowtitle="pkg.a docs">
        <doctitle><![CDATA[<h1>MyAPI</h1>]]></doctitle>
        <bottom><![CDATA[<i>MyAPI</i>]]></bottom>
    </javadoc>
    <javadoc packagenames="pkg.b" sourcepath="." destdir="${docDir}" author="true" version="true" use="true" windowtitle="pkg.b docs">
        <doctitle><![CDATA[<h1>MyAPI</h1>]]></doctitle>
        <bottom><![CDATA[<i>MyAPI</i>]]></bottom>
    </javadoc>
    <javadoc packagenames="pkg.c" sourcepath="." destdir="${docDir}" author="true" version="true" use="true" windowtitle="pkg.c docs">
        <doctitle><![CDATA[<h1>MyAPI</h1>]]></doctitle>
        <bottom><![CDATA[<i>MyAPI</i>]]></bottom>
    </javadoc>
    <javadoc packagenames="pkg.main" sourcepath="." destdir="${docDir}" author="true" version="true" use="true" windowtitle="pkg.main docs">
        <doctitle><![CDATA[<h1>MyAPI</h1>]]></doctitle>
        <bottom><![CDATA[<i>MyAPI</i>]]></bottom>
    </javadoc>
</target>

<!-- Create Java application archive (Jar) -->
<target name="archive" depends="doc">
    <jar destfile="${distDir}/myapi.jar" basedir="${buildDir}" excludes="**/*Test.class,**/Runner.class" />
</target>

但是我遇到了各种错误,例如无法从pkg.exceptions,pkg.a等找到符号

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

基于我所做的阅读和来自@gturri的回复,我得出的结论是我为自己创建了一个XY问题,所以我没有创建单独的包,而是创建了一个主包并在该包中创建了子文件夹......所以

src
|
----
    |--- pkg.exceptions
    |--- pkg.a
    |--- pkg.b
    |--- pkg.c
    |--- pkg.main
libs
|
----someExternalJar.jar

成了

src
|
----
|   |
|   --- pkg.main
|               |
|               ----
|                  |--- folder.exceptions
|                  |--- folder.a
|                  |--- folder.b
|                  |--- folder.c
libs
|
----someExternalJar.jar

通过这种方式,我能够编译 pkg.main 的内容,并使用 build.xml <中的非常小的更改创建 javadocs / p>