2015-02-06 6 views
0

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과 자원을 복사 방법은 다음과

+0

언어/로캘 관련 변형이 전혀 필요없는 것 같습니다. 두 파일이 동일하면 기본 파일 (localization.properties)을 사용하십시오. 필요한 경우에만 특정 변형을 추가하십시오. – fateddy

+0

@fateddy Java의 번들 조회도 JVM의 로켈을 고려하므로 둘 다 필요하지 않습니다. 예 : 'localization_de.properties'와'localization.properties' (영문)가 있습니다. JVM의 로케일은'de_DE'이고'en_US'의 번들은 요청됩니다. Java는 찾을 수 없지만 JVM의 기본 로케일과 일치하는 번들을 찾을 수 있으므로 기본으로 되돌아 가기 전에이를 사용합니다. – thee

답변

1

입니다 :

Locale.setDefault(Locale.ROOT); 

따라서 응용 프로그램은 환경 구성에 독립적 일 수 있습니다 (일반적으로 더 강력합니다).

관련 문제