【问题标题】:Maven reference folder in Build构建中的 Maven 参考文件夹
【发布时间】:2016-10-12 20:23:56
【问题描述】:

你好,这个问题是Java Maven reference files in WebApp

我正在尝试将一个文件夹复制到构建目录中(这是成功的)然后我尝试运行应用程序并将该目录复制到一个临时目录中,以便我可以进行更改并将其压缩到一个 Scorm 包中。

该文件夹在构建中为

C:\workspace\admin\target\admin-1.0-SNAPSHOT\resources\applications\scorm

我正在尝试从正在运行的应用程序中将其引用为:

    System.out.println(new File("applications/scorm").getAbsolutePath());

    File source = new File("applications/scorm");
    File dest = new File(Constants.TEMP_DIR_PATH + '/' + guideId);
    try {
        FileUtils.copyDirectory(source, dest);
        System.out.println("copy complete");
    } catch (IOException e) {
        e.printStackTrace();
    }

它永远找不到文件,我的绝对路径检查给了我

C:\workspace\admin\applications\scorm\

这表明它正在根目录中查找。

如何从构建目录中的构建应用程序中引用文件?

即该文件夹位于资源下的构建目录的根目录中,File source = new File("What is the file URL from the build directory?"); 引用该文件夹的内容是什么?

编辑

这行得通

target/admin-1.0-SNAPSHOT/resources/applications/scorm

但我怀疑将其部署为 WAR 文件时是否可以在生产环境中工作

【问题讨论】:

  • 也许可以试试类路径资源?在这种情况下,您可以灵活应对战争或爆炸战争(即解压战争)。
  • 我将如何处理,您如何引用该文件夹?
  • 将它们复制到src\main\resources\applications 而不是src\main\webapp\resources\applications
  • 试试这个File source = new File("../../../resources/applications/scorm");,让我们知道它是否有效。
  • 正如我之前评论的那样,您不能,并且无论您如何努力,都永远无法以 @ 的身份访问 JAR 或 WAR 中的资源987654330@。这没用。它不是File。你只能有一个InputStreamsrc/main/resources 中的任何内容都是最终会出现在 JAR/WAR 中的资源。还有I still don't understand the real question here.

标签: java maven


【解决方案1】:

您需要从构建目录(您的 pom.xml 所在的位置)中指定所有工件,因此解决方案是将源位置设置为 resources/applications/scorm

System.out.println(new File("resources/applications/scorm").getAbsolutePath());

File source = new File("resources/applications/scorm");
File dest = new File(Constants.TEMP_DIR_PATH + '/' + guideId);
try {
    FileUtils.copyDirectory(source, dest);
    System.out.println("copy complete");
} catch (IOException e) {
    e.printStackTrace();
}

【讨论】:

  • 你能用代码示例更好地解释一下吗?
  • 嗨,我一直在尝试 - 不工作 - 这工作 target/admin-1.0-SNAPSHOT/resources/applications/scorm 但我怀疑是否可以在生产中工作
  • 这不是正确的做法。因为您的工件名称会在它投入生产时从 admin-1.0-SNAPSHOT 更改为其他名称。因此硬编码路径将不起作用。
  • 除非您没有将任何资源打包到您的 jar 文件中,否则这将不起作用。
  • 我想我会将资源托管在 S3 或其他地方的其他地方,然后将它们作为 zip 加载,进行更改然后部署 - 这似乎更容易(但更慢)
猜你喜欢
  • 2013-07-09
  • 1970-01-01
  • 2014-10-05
  • 2017-02-20
  • 2017-07-13
  • 2017-03-15
  • 2017-12-28
  • 2014-04-07
相关资源
最近更新 更多