执行jar命令排除文件

Dej*_*ell 10 java jar

我关注了Java Archive Tool但无法找到如何排除文件夹.

例如,我有工作副本目录下的文件:

workingcopy
--src
  --.svn
  -- com
--.svn
--WebContent
Run Code Online (Sandbox Code Playgroud)

我想在src排除从.svn目录开始的所有文件夹的类中编译和创建jar .我想从运行它cmdjar -cf test.jar等.

我该怎么做?

sil*_*los 21

这可以通过命令完成:

jar cf test.jar `find . -not -path "*/.svn/*" -not -type d`
Run Code Online (Sandbox Code Playgroud)

问题jar是如果传递了目录,它将以递归方式添加所有内容.所以我们的目标是只传递文件,只传递路径中没有'.svn'子字符串的文件.为此,find 命令用于2个条件:

  1. -not -path "*/.svn*" 过滤掉所有svn文件
  2. -not -type d 过滤掉所有目录

这将从jar中排除空目录.


And*_*s_D 3

这可能是解决您问题的实用方法:它不会排除subversion 目录(目录),而仅包含类文件(假设您将类文件置于版本控制之下):

jar -cf test.jar *.class
Run Code Online (Sandbox Code Playgroud)

进一步增强:将代码与类文件分开。无论如何,您不想签入类文件(构建工件):

workingcopy
--src
  --.svn
  -- com  // only *.java files in here and below
--.svn
--WebContent
--bin
  --com   // only *.class files in here and below
Run Code Online (Sandbox Code Playgroud)