2014-10-08 33 views
1

我想把一些类放在一个jar中,用作库。用Ant创建java库

对于这个测试,我想要有一个类,apiInterface,它在包project.api

我这里想我用的是库错误的,因为我得到的“包project.api不存在”在导入线,但This answer暗示的jar tf project.jar输出应该是

project/api/apiInterface.class 

而我得到

apiInterface.class 
apiInterface.java 

被包含的java文件的目的是,但没有必要。

我build.xm

<target name="buildAPI" depends="compile">     
    <mkdir dir="${jar}" />         
    <jar destfile="${jar}/${ant.project.name}-api.jar"> 
     <fileset dir="${bin}/${ant.project.name}/api"/> 
     <fileset dir="${src}/${ant.project.name}/api"/> 
    </jar>             
</target> 

成功编译的相关部分编译Java并把.class文件在斌/项目/ API。

回答

1

Jar文件将包含fileset元素中指定的目录下的文件列表。由于您将该目录指定为${bin}/${ant.project.name}/api,因此该任务将仅在该目录下进行搜索并将该类文件包括在Jar中,即${bin}/${ant.project.name}/api/apiInterface.class

要包含与包相对应的目录,只需将dir属性更改为指向根文件夹(在本例中为${bin})。相同的源文件。

<jar destfile="${jar}/${ant.project.name}-api.jar"> 
    <fileset dir="${bin}"/> 
    <fileset dir="${src}"/> 
</jar> 

如果只有这个包应该包含(即其他包不应该在罐),使用includes属性:

<jar destfile="${jar}/${ant.project.name}-api.jar"> 
    <fileset dir="${bin}" includes="${ant.project.name}/api/*.class" /> 
    <fileset dir="${src}" includes="${ant.project.name}/api/*.java" /> 
</jar> 

您可以检查从Ant手册this链接如何正确使用这个任务。

+0

如何排除bin和src中除api目录外的所有内容? – mtfurlan 2014-10-08 18:46:52

+0

@Scuzzball更新了一个例子。 – manouti 2014-10-08 18:50:53