有没有办法将多个配置文件保存在插件文件夹(Spigot & Maven)的子文件夹中



我的项目中的一个目录中有多个语言文件。 这些语言文件基本上是自定义配置文件,我也想将其保存在插件文件夹的子文件夹中。

我已经编辑了我的pom.xml,将.yml文件实现到压缩.jar

<resource>
<directory>${basedir}/src/main/resources/languages</directory>
<includes>
<include>*.yml</include>
</includes>
</resource>

到目前为止,这是有效的,但是当我保存配置文件时,

File file = new File(Main.getPlugin().getDataFolder(),
ConfigManager.getConf().getString("Settings.language") + "_lang.yml");
if (!file.exists()) {
System.out.println("This language file does not exist!");
file.getParentFile().mkdirs();
}
Main.getPlugin().saveResource(file.getName(), true);
conf = YamlConfiguration.loadConfiguration(file);

当插件加载时,它们不会保存在子文件夹中。

我试图告诉File()函数,它应该使用不同的位置,例如

File file = new File(Main.getPlugin().getDataFolder() + System.getProperty("file.separator") + "languages", 
ConfigManager.getConf().getString("Settings.language") + "_lang.yml");

但它没有用。

我可以使用当前的方式,语言文件不会保存在子文件夹中,但是随着时间和更多的 lang 文件,如果文件太多,它会变得非常混乱。

如果我使用的这种方法是"一种愚蠢的方式",那我很好,如果其他人可以告诉我如何编写更好的"语言切换器"的方法。

好的,我自己找到了解决方案。

我不得不添加一个额外的 maven 插件来根据 此堆栈溢出帖子

最后,我将向您展示我所做的更改。

<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes/languages</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/resources/languages</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

最新更新