Редактировать plist XML-файл из Maven? - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть файл XML, в котором я храню соответствующие значения по умолчанию для своего приложения, такие как URL-адрес сервера. Я использую Maven для создания своего приложения. Моя цель - отредактировать XML и изменить URL-адрес сервера в зависимости от среды, которую я буду использовать, такой как среда разработки, тестирования и производства.

Файл XML имеет тип plist и не может быть изменен.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ServerURL</key>
    <string>https://server_url</string>

    <!-- Other properties goes here -->

</dict>
</plist>

Кто-нибудь знает, как это решить?

Я нашел xmltask , но не работает пример того, как что-то вроде этого. Я хочу что-то действительно простое для выполнения простой задачи, как это. Есть ли простой плагин Maven, который исправляет это? Я знаю XPath, и было бы неплохо использовать простое выражение XPath для изменения файла XML.

1 Ответ

2 голосов
/ 03 февраля 2012

Я бы предложил использовать профили и фильтрацию ресурсов с maven-resources-plugin для этой задачи.

Например, в вашем XML-файле конфигурации вы можете указать URL-адрес сервера следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ServerURL</key>
    <string>${server.url}</string>

    <!-- Other properties goes here -->

</dict>
</plist>

Между тем, в вашем файле pom.xml вы должны определить свойство server.url

<properties>
  <server.url>http://default_url</server.url>
</properties>

и один (или несколько) профилей, которые будут изменять его значение

<profiles>
  <profile>
    <id>custom</id>
    <properties>
      <server.url>http://custom_url</server.url>
    </properties>
  </profile>
</profiles>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...