Mat*_*kas 66 java eclipse pom.xml maven
我正在Eclipse中开发一个Java项目,它是使用Maven构建的.我正在使用旧项目中的一些回收代码,其中一个类在具有特定名称的JAR的"META-INF/services"文件夹中查找文件,然后解析该文件的文本.在此特定示例中,它查找具有Java接口名称的文件,然后从文件内部获取实现的类名.
所以基本上我要做的是在JAR的"META-INF/services"文件夹中包含一个文件名(X)和一行文本(Y)的文件.我猜这应该是使用Maven完成的,可能是通过在POM文件中指定一个属性,但我的研究没有发现任何东西.我知道你不应该硬编码或手动输入任何META文件,所以我不知道该怎么做.
提前致谢.
Bri*_*ian 107
使用该位置创建一个新的源文件夹src/main/resources
,然后META-INF/services
在其中创建您的文件夹并放入您的FQCN文件.这应该自动将它们复制到jar文件中.所以你会有:
Project
| src
| | main
| | java
| | [your source code]
| | resources
| | META-INF
| | services
| | [your service files]
Run Code Online (Sandbox Code Playgroud)
值得注意的是,这也适用于具有默认源集的Gradle项目.
Puc*_*uce 18
默认情况下,Maven在以下位置查找资源:
src/main/resources
Run Code Online (Sandbox Code Playgroud)
所以把它放在
src/main/resources/META-INF/services
Run Code Online (Sandbox Code Playgroud)
Rob*_*der 14
或者,如果您的项目不使用标准目录结构(或者您只是希望拥有备用资源目录),则可以手动指定POM文件的资源目录.
例如,如果您META-INF/services
所在的文件夹resources
位于项目目录的根目录中,则可以按如下方式指定:
<project>
...
<build>
...
<resources>
<resource>
<directory>resources</directory>
</resource>
</resources>
...
</build>
...
</project>
Run Code Online (Sandbox Code Playgroud)
您可以使用它通过添加多个<resource>
元素来指定多个目录.