java - 运行 Ant 的 jar 任务时如何挑选包?

标签 java ant jar

我正在将我的 Java 源文件编译 ( javac) 为 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

这意味着我需要 4 <jar>我里面的任务 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 中放置哪些包裹?显然,我想要以下包/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

想法?

最佳答案

只需将类文件的路径包含在与您的完全限定包名称相对应的路径下:

<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 表示所有类文件,包括子目录中的类文件。

关于java - 运行 Ant 的 jar 任务时如何挑选包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24758805/

相关文章:

java - JAXWS-RI WSGEN 配置为使用特定的 JDK

java - 如何在 ant taskdef 操作的整个执行过程中拥有单例类的一个实例

java - 是否可以添加 eclipse 插件 jar 作为 MAVEN 依赖项?

java - 如何清理使用 .create(OnSubscribe) 方法创建的 Observable

java - 等待 Selenium 中的页面加载

java - 自动检查 JSF (xhtml) 文件的语法是否正确

java - schemagen Ant任务无法使用gradle正常工作

java - 如何在 Java 中处理虚拟文件系统中单个文件中的资源

android - Proguard Gradle 重复的 jar

java - 尝试创建新的 JarFile 时出现 "java.util.zip.ZipException: error in opening zip file"