Java 在JARing多个选择性文件时忽略基本目录

Java 在JARing多个选择性文件时忽略基本目录,java,class,makefile,jar,Java,Class,Makefile,Jar,我有以下目录结构: base\ dir1\ dir11\ RequiredFile.class NonRequiredFile.class dir12\ AnotherRequiredFile.class AnotherNonRequiredFile.class dir11\ RequiredFile.class dir12\

我有以下目录结构:

base\
    dir1\
         dir11\
             RequiredFile.class
             NonRequiredFile.class
         dir12\
             AnotherRequiredFile.class
             AnotherNonRequiredFile.class
dir11\
     RequiredFile.class
dir12\
     AnotherRequiredFile.class
作为makefile操作的一部分,我希望将RequiredFile.class和另一个RequiredFile.class归档在同一JAR文件中,并省略base/dir目录。最终输出应该是一个JAR文件,这样解压缩JAR文件将创建以下结构:

base\
    dir1\
         dir11\
             RequiredFile.class
             NonRequiredFile.class
         dir12\
             AnotherRequiredFile.class
             AnotherNonRequiredFile.class
dir11\
     RequiredFile.class
dir12\
     AnotherRequiredFile.class
我知道这可以通过bin/jar命令中的-C标志来完成,但是我需要在每个输入文件之前添加
-cdir1
。上面的示例只包含两个,但后面会有更多,我希望避免使用诸如
jar-C dir FILE-C dir FILE2-C dir FILE3….之类的命令-C目录文件

有没有办法对所有输入文件使用
-C
标志


谢谢

假设您的所有类文件文件名都已经存在于Makefile变量中。如果您使用的是gnu make,则可以使用
patsubst
功能来实现:

CLASSFILES := RequiredFile.class AnotherRequiredFile.class

DIR := dir1
JAR_CMD = $(patsubst %.class, -C $(DIR) %.class, $(CLASSFILES))

如果这是构建的一部分(不清楚是否是),您可以使用Ant:或Maven:来完成这一点,我不知道这与[C]有什么关系,所以我将删除该标记