Java 플러그인에서 제공하는 표준 자원 처리를 사용하여 최종 JAR에 포함 된 Java 자원 번들에 대해 작업합니다.Gradle 작성 JAR에 다른 이름으로 여러 번 파일 포함
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
파일의 복제본을 작성하여 처리 된 자원에 추가하는 방법에 대해서는 전혀 모른다. (. 예를 들어 루트 로케일) -
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 기본값을 극복하기 위해 더 나은 방법이 생각> 프로그래밍 기본 로케일을 설정은 : 당신이 gradle
과 자원을 복사 방법은 다음과
언어/로캘 관련 변형이 전혀 필요없는 것 같습니다. 두 파일이 동일하면 기본 파일 (localization.properties)을 사용하십시오. 필요한 경우에만 특정 변형을 추가하십시오. – fateddy
@fateddy Java의 번들 조회도 JVM의 로켈을 고려하므로 둘 다 필요하지 않습니다. 예 : 'localization_de.properties'와'localization.properties' (영문)가 있습니다. JVM의 로케일은'de_DE'이고'en_US'의 번들은 요청됩니다. Java는 찾을 수 없지만 JVM의 기본 로케일과 일치하는 번들을 찾을 수 있으므로 기본으로 되돌아 가기 전에이를 사용합니다. – thee