如何复制注入资源的目录?

时间:2014-09-15 14:35:00

标签: java spring

My Spring应用程序在app-resources.jar上有一个Maven依赖项,其中包含目录app-resources(以及META-INF目录,我不在乎)。

我需要复制该文件夹的全部内容,而不知道所包含文件和子文件夹的列表。

我的第一直觉是在运行时尝试将文件夹注入Spring资源:

// This is actually injected from app-resources.jar
@Value("classpath:/app-resources/")
private Resource appResource;

/** Copies the static resources to the NFS target folder. */
private void publishResources(final File targetPath) {
    File appResourceDir = getFileFromResource???(appResource);
    FileUtils.copyDirectory(appResourceDir, targetPath);
}

但我找不到将查看该资源作为目录的方法。我还考虑将jar本身作为资源注入,然后解压缩它(使用GzipInputStream)。但我不知道这是否可能。

有没有人能很好地解决这个问题?编译时解决方案(使用maven)也是受欢迎的。

编辑回复评论。这个应用程序的架构有点不寻常,但它不能改变我的力量。我们有一个前端项目,它在编译时生成一个静态的html / js网站(这就是app-resources.jar的内容)。在运行时,我们希望发布此静态站点的多个实例,每个实例具有不同的数据文件(因此我们复制静态内容,并将特定数据文件放在站点的数据/目录中)。

1 个答案:

答案 0 :(得分:1)

关闭袖口答案,也许你可以获得完整的课程路径。

        System.out.println(System.getProperty("java.class.path"));

然后,您可以解析您感兴趣的jar的路径,然后将所需的路径解压缩到所需的目录。