Я использую maven-android-plugin и использую хитрый механизм замены токенов, чтобы сделать это.
Я использую пример "morseflash" и добавил его в конфигурацию плагина maven-resources:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
<configuration>
<delimiters>
<delimiter>${*}</delimiter>
<delimiter>>08*<</delimiter>
</delimiters>
</configuration>
</plugin>
Плагин ресурсов позволяет вам определять странные разделители для поиска / замены. Ограничитель по умолчанию - ${*}
, но я добавил >*<
, чтобы он соответствовал содержимому элемента XML. (На самом деле я использовал >08*<
; я объясню почему через минуту.)
Затем в моем strings.xml я написал это:
<string name="googleMapsAPIKey">08DEBUGKEYABCDEFBLAHBLAHBLAH</string>
И определил свойство Maven в профиле выпуска, например:
<profile>
<id>release</id>
<!-- via this activation the profile is automatically used when the release is done with the maven release
plugin -->
<activation>
<property>
<name>performRelease</name>
<value>true</value>
</property>
</activation>
<properties>
<DEBUGKEYABCDEFBLAHBLAHBLAH>>08RELEASEKEYABCDEFBLAHBLAHBLAH<</DEBUGKEYABCDEFBLAHBLAHBLAH>
</properties>
<-- ... -->
</profile>
Это создает свойство Maven, названное в честь отладочного ключа Maps, значением которого является ключ отладки выпуска.
К сожалению, свойства Maven не могут начинаться с цифр. Мой ключ отладки и ключ разблокировки начинались с 08Wfj...
, поэтому я использовал разделитель >08*<
и обязательно включил >08
в строку замены.