#java #spring #spring-mvc #jakarta-ee #maven
#java #spring #spring-mvc #джакарта-ee #maven
Вопрос:
у меня есть профиль в файле pom, подобный следующему:
<profile>
<id>local</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<application.domain>mydomain.com</application.domain>
<application.name>MyApp</application.name>
</properties>
</profile>
и я прочитал это значение в файле свойств следующим образом:
${application.name}
first.key =u0627u0644u062Eu0627u0635 u0628u0643 ${application.name} u0627u0633u062Au0645u0631 u0645u0639 u062Du0633u0627u0628
second.key=u061F ${application.name} u0644u064Au0633 u0644u062Fu064Au0643 u062Du0633u0627u0628 u0639u0644u0649
он отлично работает с первым ключом, и значение успешно заменено, но со вторым и другими подобными ключами это не сработало, я не знаю почему, есть идеи?
Ответ №1:
У меня все отлично работало после добавления следующего плагина в файл pom:
http://maven.apache.org/plugins/maven-resources-plugin/examples/encoding.html
Ответ №2:
Если вы хотите заменить имя приложения в вашем файле свойств значением в Maven pom, вы должны:
- Используйте @variable@ format в вашем файле свойств! Насколько я понимаю, это переменная Maven.
- активируйте фильтрацию ресурсов для ресурсов (по крайней мере, для вашего файла свойств)
Вы должны определить правильную кодировку файла для фильтрации ресурсов (рекомендуется UTF-8, но в любом случае файлы свойств должны быть в ascii-7, как у вас).
Ответ №3:
Возможно, механизм фильтрации Maven не справляется с экранированием в Юникоде. Почему бы просто не записать это в UTF-8?
first.key =الخاص بك ${application.name} استمر مع حساب
second.key=؟ ${application.name} ليس لديك حساب على
Комментарии:
1. Нет, пожалуйста. Файлы свойств не должны быть в UTF-8 … или могут? Они должны быть доступны для чтения в формате ascii-7 и unnnn. Maven должен быть настроен для чтения (других) отфильтрованных исходных файлов в правильной кодировке.
2. @helios читается? Я не знаю о вас, но я не могу прочитать экранирование в Юникоде (ни арабский, но это другая проблема :-)). Серьезно: с тех пор, как появился Unicode, я бы сказал, что хранение файлов в UTF-8 является хорошей практикой, и я не вижу причин не делать этого (при условии, что вы правильно настроили исходную кодировку)
3. Мой комментарий совсем не понятен. Я имею в виду, что файлы свойств Java не должны содержать символов, отличных от ascii-7. Если вы хотите сохранить символ выше, вы должны использовать формат u nnnn . Это все еще ascii-7 (и UTF-8 одновременно ;-), но java.util. Свойства будут правильно декодировать объект в память. Если вы уважаете это, то Maven будет нормально фильтровать файл (он может предполагать, что это ascii-что угодно, iso-8859-что угодно или UTF-8). Maven не будет пытаться декодировать формат unnnn. Для Maven это просто: строка u чисел.
4. Properties javadoc рассказывает о кодировке файла: download.oracle.com/javase/6/docs/api/java/util/Properties.html
5. @helios, что ты предлагаешь тогда?