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]有什么关系,所以我将删除该标记