Java 执行jar命令排除文件
我遵循了,但找不到如何排除文件夹 例如,我有工作副本目录下的文件:Java 执行jar命令排除文件,java,jar,Java,Jar,我遵循了,但找不到如何排除文件夹 例如,我有工作副本目录下的文件: workingcopy --src --.svn -- com --.svn --WebContent 我只想从src下的类编译和创建jar,不包括以.svn目录开头的所有文件夹。我想从cmd运行它,比如jar-cf test.jar等等 我该怎么做呢?看起来jar程序本身无法做到这一点。您需要添加一些其他类型的脚本来完成所需的任务 看起来你可能正在使用windows,所以我猜你可以用这种方式来写这些缺失的部分 希望这
workingcopy
--src
--.svn
-- com
--.svn
--WebContent
我只想从src
下的类编译和创建jar,不包括以.svn目录开头的所有文件夹。我想从cmd
运行它,比如jar-cf test.jar
等等
我该怎么做呢?看起来jar程序本身无法做到这一点。您需要添加一些其他类型的脚本来完成所需的任务 看起来你可能正在使用windows,所以我猜你可以用这种方式来写这些缺失的部分
希望这会有所帮助。这很容易通过和等构建工具实现(以及许多其他事情)这可能是解决您问题的一个实际解决方法:它不会排除subversion目录,但只包括类文件(假设您不将类文件置于版本控制之下): 进一步增强:将代码与类文件分开。无论如何,您都不想签入类文件(生成人工制品):
正如所说的,我不认为仅仅使用
jar
工具本身就可以做到这一点。您应该做的是考虑它的特性。在SVN中有一个称为导出的概念。如果您使用它,您将获得不带.svn存储库的结构。这和退房有点不同
在此之后,您必须能够从该目录而不是存储库文件夹执行常规jar命令。这可以通过以下命令完成:
jar cf test.jar `find . -not -path "*/.svn/*" -not -type d`
jar
的问题是,如果传递目录,它将与all内容一起递归添加。因此,我们的目标是只传递文件,并且只传递路径中没有“.svn”子字符串的文件。为此,find
命令用于两种情况:
-not-path“*/.svn*”
过滤掉所有svn文件-not-type d
过滤掉所有目录这将从jar中排除空目录。在Java 11中,您可以使用exlamation标记(!)来排除文件或文件夹,这些文件或文件夹由管道(|)分隔 示例:
jar cvf MyJarFile.jar !(file1)
jar cvf MyJarFile.jar !(file1|folder1)
在Java8JAR上,使用@silnijlos中的find可以看到很好的答案
您还可以使用maven、ant或gradle(如果有),maven参考:
那里只有Java类。我还可以通过jar或任何其他不使用ANT的命令行将其编译为类吗?@Odelya-使用
javac
编译java源文件,并(可选)使用jar
创建库jar
无法编译,您不需要ant或maven,但尤其是ant极大地简化了构建过程(但您必须学习/理解ant基础知识)。maven更加简化,但maven更难理解。它需要(永久)的互联网连接。@Anderas_D是的,我和Maven一起工作过,但不喜欢它,因为eclipse的插件导致了大量额外的工作,而不是所有的东西都被编译过。在找到一个好的插件之前,我不想回到Maven和pom.xml。我知道如何使用ANT,但从FinalBuilder执行它很简单,没有build.xml的外部文件。这大大缩短了我的构建时间。谢谢你。多么优雅:)!用于跛脚jar工具的优秀unix解决方案:)。这对于旧版本非常好,至少在Java11中可以使用:jar-cvf-MyWarFile.war!(folder1)或jar cvf MyWarFile.war!(文件1 | folder1)用于多重排除。
jar cf test.jar `find . -not -path "*/.svn/*" -not -type d`
jar cvf MyJarFile.jar !(file1)
jar cvf MyJarFile.jar !(file1|folder1)