我试图把一些类放在一个jar中,用作库。
对于这个测试,我尝试有一个类apiInterface
,它在包project.api
中。
我到这里时认为我使用了错误的库,因为我在导入行得到了"Package project.api不存在",但这个答案意味着jar tf project.jar
的输出应该是
project/api/apiInterface.class
而我得到
apiInterface.class
apiInterface.java
所包含的java文件是有意的,但不是必需的。
我的建筑.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>
compile成功编译了java,并将.class文件放入bin/project/api中。
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>
如果只应包含此包(即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手册中查看此链接,了解如何正确使用此任务。