【问题标题】:Where should I put a configuration file needed by one of my maven jar dependency?我应该将我的 maven jar 依赖项之一所需的配置文件放在哪里?
【发布时间】:2017-02-13 22:54:24
【问题描述】:

所以我有 2 个项目,比如说 Project1 和 Project2。

第一个是运行良好的Java应用程序(没有maven),读取配置文件如下:

public static void init() {
  Path path = Paths.get("config.properties");
  byte[] data = Files.readAllBytes(path);
  ...
}

我从这个项目创建了 project1.jar,并将它用作我的 Project2 中的 maven 依赖项,这是一个动态 Web 项目。 这种依赖关系很好地包含在内,因为我可以毫无问题地使用它的其他部分。

我现在遇到的问题是,当我尝试从我的 Project2 中调用 init() 方法时,我得到了一个 java.nio.file.NoSuchFileException

我想这是因为我必须将 config.properties 文件放在 Project2 树中的某个位置(我不希望它包含在 project1.jar 中)

我拿了这个config.properties文件并试图把它放在我的maven树WebContentMETA-INFWEB-INFtargettargetsrc的每个子目录中的任何地方。 . 没有任何效果,我仍然得到异常。

我是否必须以某种方式将其包含在pom.xml 中?如果是,如何?如果没有...有什么想法吗?

【问题讨论】:

  • 创建类似src/main/resources 的目录结构并将config.properties 文件转储到资源文件夹中。看看这是否有效。
  • 遗憾的是,我仍然得到异常
  • 我建议你看看下面的linkProject2是一个servlet,所以你要了解context的概念。
  • 感谢您的链接,所以如果我无法手动将path 作为参数传递给init(),该方法将永远找不到它?
  • 顺便问一下,您是如何将 project1 作为依赖项添加到 project2 的?另外,试试这两件事。 1. 在 Project1 中,右键单击包并选择新建 -> 文件,然后输入包含“.properties”后缀的文件名并将您的内容放入其中。 2.在你的project1中创建一个与src同级的respurces文件夹,并将属性文件放在这个文件夹中。

标签: java maven


【解决方案1】:

直截了当。 按照 RITZ XAVI 的建议去做。添加到 src/main/resources

然后替换你的init函数如下。

public static void init() {
    InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
    byte[] data = IOUtils.toByteArray(in);
    ...
}

根据您添加为 maven 依赖项的方式,我认为您必须使用自定义组和工件 id 在您的 repo 中安装 jar

【讨论】:

    猜你喜欢
    • 2010-10-02
    • 1970-01-01
    • 2019-04-18
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    相关资源
    最近更新 更多