我正在编译(javac
)我的Java源文件到gen/bin
,如下所示:
myproject/
src/
(all my source code)
gen/bin/
com.me.myorg.fizz.*
com.me.myorg.buzz.*
com.me.myorg.foo.*
com.me.myorg.bar.*
恰好在每个顶级包(fizz,buzz,foo,bar)之间存在零(0)依赖关系; foo
中的任何内容都没有foo
之外的依赖关系
我想从此设置中创建4个不同的JAR文件:
fizz.jar
buzz.jar
foo.jar
bar.jar
这意味着我的<jar>
目标中需要执行4 jar-all
个任务,如下所示:
<target name="jar-all">
<jar destfile="gen/dist/fizz.jar">
<fileset dir="gen/bin" includes="???" /> --> How do I specify **only** com.me.myorg.fizz.* classes ???
</jar>
<!-- 3 other nearly-identical JAR tasks... -->
</target>
我如何选择樱桃采摘哪些包放在每个罐子里?显然,我想要以下的包/ jar实现:
com.me.myorg.fizz.* --> fizz.jar
com.me.myorg.buzz.* --> buzz.jar
com.me.myorg.foo.* --> foo.jar
com.me.myorg.bar.* --> bar.jar
想法?
答案 0 :(得分:2)
只需在与完全限定的包名对应的路径下包含类文件的路径:
<jar destfile="gen/dist/fizz.jar">
<fileset dir="gen/bin" includes="com/me/myorg/fizz/**/*.class" />
</jar>
<jar destfile="gen/dist/buzz.jar">
<fileset dir="gen/bin" includes="com/me/myorg/buzz/**/*.class" />
</jar>
<jar destfile="gen/dist/foo.jar">
<fileset dir="gen/bin" includes="com/me/myorg/foo/**/*.class" />
</jar>
<jar destfile="gen/dist/bar.jar">
<fileset dir="gen/bin" includes="com/me/myorg/bar/**/*.class" />
</jar>
**/*.class
表示所有类文件,包括子目录中的文件(如果有的话)。