在 Gradle 构建的 JAR 中多次包含具有不同名称的文件
Include a file multiple times with different names in a Gradle-built JAR
我使用 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
并将其包含在基本名称中,因此我不需要资源目录中的两个单独的文件。我假设我需要连接到 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 插件提供的标准资源处理来处理包含在最终 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
并将其包含在基本名称中,因此我不需要资源目录中的两个单独的文件。我假设我需要连接到 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);
因此您的应用程序将独立于环境配置(并且通常更健壮)。