我想使用jar
命令行实用程序将我的一个jar提取到指定的目录。
如果我理解这个权利-C
选项应该诀窍但是当我尝试
jar xvf myJar.jar -C ./directoryToExtractTo
我从jar实用程序获取使用信息,所以我做错了。
我希望用jar
实现的是什么,或者我需要手动移动我的jar并调用
jar xvf myJar.jar
答案 0 :(得分:59)
jar使用zip压缩,因此您可以使用任何解压缩实用程序。
示例:
$ unzip myJar.jar -d ./directoryToExtractTo
答案 1 :(得分:51)
最好这样做。
导航到您需要的文件夹结构
使用命令
jar -xvf 'Path_to_ur_Jar_file'
答案 2 :(得分:13)
jar命令本身没有这样的选项。查看the documentation:
-C dir在处理以下inputfiles参数时,在执行jar命令期间临时更改目录(cd dir)。 它的操作类似于UNIX的-C选项 焦油效用。例如:jar uf foo.jar -C类bar.class更改 到classes目录并将该目录中的bar.class添加到 foo.jar中。以下命令,jar uf foo.jar -C classes。 -C bin xyz.class更改为classes目录并添加到foo.jar all classes目录中的文件(不创建类 jar文件中的目录),然后更改回原始文件 更改为bin目录之前的目录,以添加xyz.class foo.jar中。如果类包含文件bar1和bar2,那么这就是 jar文件包含使用jar tf foo.jar:META-INF /
META-INF / MANIFEST.MF
BAR1
BAR2
xyz.class
答案 3 :(得分:3)
如果您不想更改当前的工作目录,可能更容易在子shell中运行extract命令。
mkdir -p "/path/to/target-dir"
(cd "/path/to/target-dir" && exec jar -xf "/path/to/your/war-file.war")
然后,您可以从任何工作目录执行此脚本。
[感谢David Schmitt子shell技巧]
答案 4 :(得分:1)
这对我有用。
我创建了一个文件夹,然后在命令提示符下使用CD选项更改为该文件夹。
然后从那里执行了jar。
d:\LS\afterchange>jar xvf ..\mywar.war
答案 5 :(得分:0)
这是我最终在我的.bat文件中使用的内容。当然只有Windows。
set CURRENT_DIR=%cd%
mkdir ./directoryToExtractTo
cd ./directoryToExtractTo
jar xvf %CURRENT_DIR%\myJar.jar
cd %CURRENT_DIR%
答案 6 :(得分:0)
截至2020年10月的当前工作版本,已更新为使用maven-antrun-plugin 3.0.0。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>prepare</id>
<phase>package</phase>
<configuration>
<target>
<unzip src="target/shaded-jar/shade-test.jar"
dest="target/unpacked-shade/"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
答案 7 :(得分:0)
可能有点矫枉过正,但这是我想要的,所以我为它编写了一个 Bourne Shell 脚本(依赖于 sed
和 grep
):
Usage: unjar FILE [DEST]
- DEST must not already exist (won't overwrite existing contents);
path to DEST will be created.
- If DEST is not provided, defaults to a subdirectory in the current
working directory that will be named after FILE without the extension.
Ex: unjar foo.jar # foo.jar extracted to ./foo
- If DEST is provided, the path will be created and the jar will
be extracted into it.
Ex: unjar foo.jar /a/b/c # foo.jar extracted into /a/b/c
完整脚本在这里gist