我正在努力寻找一些可以浏览some.war文件的替代库。
问题是我需要解析WAR文件,然后按名称和JAR文件中的一些内容查找特定的JAR。然后我必须解析那些内容,例如来自这些jar的pom.xml创建一个单独的maven项目模块,只有某些依赖项和配置从其他资源追加。我发现 java.util.zip 包有点不方便和杂乱。
是否有一些替代 java.util.zip 可以解析/阅读战争而不会出现像ZipFile / ZipEntry - >之间切换这样的麻烦。 JarFile / JarEntry?可以像处理目录那样处理war存档中的zip / war / jar和jar文件的东西?或者必须制定他/她自己的解决方案?
谢谢,
答案 0 :(得分:1)
我使用ZipInputStream
执行类似任务:如果将一个ZipInputStream
包装到另一个public class ZipTest {
public static void main(String[] args) throws IOException {
try(InputStream is = new FileInputStream(args[0]))
{
listZipEntries(1, is);
}
}
private static void listZipEntries(int indent, InputStream is) throws IOException {
ZipInputStream zip = new ZipInputStream(is);
while(true) {
ZipEntry entry = zip.getNextEntry();
if(entry == null)
return;
System.out.printf("%"+indent+"s%s\n", "", entry.getName());
if(entry.getName().endsWith(".zip") || entry.getName().endsWith(".jar"))
listZipEntries(indent+3, zip);
}
}
}
中,则可以透明地访问另一个存档中的存档,而无需解压缩顶级存档。以下是展示如何使用它的简短示例:
.zip
它会转储zip-archive中的文件名。如果它遇到名称以.jar
或 <!-- home page -->
<script type="text/ng-template" id=“home.html">
<ion-view ng-controller=“HomeController" title=“Home page">
<ion-content>
<ion-list>
<ion-item ng-repeat="message in messages track by $index">
{{message}}
</ion-item>
<ion-list>
</ion-content>
</ion-view>
</script>
结尾的文件,它会进入并以递归方式转储它。对我来说,它看起来很简单,不需要第三方代码。