繁体   English   中英

如何使用 Maven 在 JAR 的“META-INF/services”文件夹中包含配置文件

[英]How to include a config file in the “META-INF/services” folder of a JAR using Maven

我正在 Eclipse 中处理一个 Java 项目,该项目是使用 Maven 构建的。 我正在使用旧项目中的一些回收代码,其中一个类在 JAR 的META-INF/services文件夹中查找具有特定名称的文件,然后解析该文件的文本。 在这个特定的示例中,它查找具有 Java 接口名称的文件,然后从文件内部获取实现的类名称。

所以基本上我想要做的是在 JAR 的“META-INF/services”文件夹中包含一个文件,文件名 (X) 和一行文本 (Y) 我猜这应该使用 Maven 来完成,也许通过在 POM 文件中指定一个属性,但我的研究没有发现任何东西。 我知道你不应该硬编码或手动输入任何 META 文件,所以我不知道在这里做什么。

创建一个位于src/main/resources位置的新源文件夹,然后在其中创建您的META-INF/services文件夹并放入您的 FQCN 文件。 这应该会自动将它们复制到 jar 文件中。 所以你会有:

Project
| src
| | main
|   | java
|     | [your source code]
|   | resources
|     | META-INF
|       | services
|         | [your service files]

值得注意的是,这也适用于具有默认源集的 Gradle 项目。

默认情况下,Maven 在以下位置查找资源:

src/main/resources

所以把它放在

src/main/resources/META-INF/services

或者,如果您的项目不使用标准目录结构(或者您只是希望拥有备用资源目录),您可以手动指定 POM 文件的资源目录

例如,如果您的META-INF/services位于位于项目目录根目录下的名为resources的文件夹中,则可以将其指定如下:

<project>
...
  <build>
    ...
    <resources>
      <resource>
        <directory>resources</directory>
      </resource>
    </resources>
    ...
  </build>
  ...
</project>

您可以使用它通过添加多个<resource>元素来指​​定多个目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM