gpt4 book ai didi

java - 将 json 文件包含并读取到生成的 maven .jar 文件中

转载 作者:行者123 更新时间:2023-12-02 09:08:36 24 4
gpt4 key购买 nike

我正在使用maven-assembly-plugin使用命令行生成包含所有依赖项的单个 jar 文件:

mvn clean compile assembly:single

它编译所有 .java目录 src/main/java/ 中的文件到 .jar文件在 target/ .

我的 src/main/java/ 中有一个类读取 .json 的目录使用以下代码位于他旁边的文件:

File file = new File("src/main/java/path/to/test.json");
content = FileUtils.readFileToString(file, "UTF-8");

所以我需要访问这个.json我生成的 .jar 中的文件.

我包括这个.json在maven中使用<build>中的此配置:

<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>src/main/java/path/to/test.json</include>
</includes>
</resource>
</resources>

一切都编译成功,当我尝试运行我的 .jar 时文件在 target/使用 java -jar ./target/my-jar-file.jar 的目录效果很好。

问题是现在我希望能够移动我的 .jar文件到我想要的任何地方。但是当我在另一个地方执行它时,我收到错误消息:

java.io.FileNotFoundException: File 'src/main/java/path/to/test.json' does not exist

很明显.json文件尚未包含在我生成的 .jar 中。

有人知道我错过了什么吗?

最佳答案

尝试使用maven插件将test.json文件从jar中提取到当前项目的resources文件夹中,请尝试

 Java Code changes : -
File file = new File("src/main/resources/test.json");
content = FileUtils.readFileToString(file, "UTF-8");

pom.xml changes :-
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>unpack-jar-file</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>groupID</groupId>
<artifactId>artifactId</artifactId>
<version>version</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>${project.basedir}/src/main/resources</outputDirectory>
<includes>**/*.json</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build

注意:如果 jar 存在于本地而不是任何中央存储库中,请使用以下标记

${project.build.directory}/localrepo

关于java - 将 json 文件包含并读取到生成的 maven .jar 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59592280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com