我使用 Java 插件提供的标准资源处理来处理最终 JAR 中包含的 Java 资源包。文件结构如下:
src
└── main
├── java
└── resources
├── com
│ └── example
│ └── lang
│ ├── localization.properties
│ └── localization_en.properties
└── folder-with-unrelated-resources
由于自动资源加载的性质,我需要两次包含英文文件:作为标准英文文件 (localization_en.properties
) 和作为提供后备的基本文件,如果未找到更具体的本地化 (localization.properties
)。目前,这两个文件都存在于资源目录中,尽管它们的内容完全相同。
我正在寻找一种方法,让 Gradle 复制当前的 localization_en.properties
并将其包含在基本名称中,因此我不需要在资源目录中放置两个单独的文件。我假设我需要 Hook ProcessResources 任务,但我不知道如何创建 localization_en.properties 文件的副本并将其添加到已处理的资源中。
最佳答案
以下是使用 gradle
复制资源的方法:
task copyLocalizations(type: Copy) {
from('src/main/resources')
into(sourceSets.main.output.resourcesDir)
include('localization.properties')
rename('localization.properties', 'localization_en.properties')
}
processResources.dependsOn(copyLocalizations)
但我认为有一个更好的方法来克服 JVM 默认值 -> 以编程方式设置默认区域设置(例如设置为 ROOT 区域设置):
Locale.setDefault(Locale.ROOT);
因此,您的应用程序将独立于环境配置(并且通常更强大)。
关于java - 在 Gradle 构建 JAR 中多次包含具有不同名称的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28357823/