Ho l'obiettivo maven update-manifest che funziona nel mio progetto e aggiorno gli attributi che desidero modificare in base al profilo con cui sto confezionando; Sfortunatamente cambia il manifest che si trova nel controllo del codice sorgente. Vorrei cambiare il manifest che è impacchettato, ma lasciare la versione master da solo. Non vedo una versione di AndroidManifest sotto target/su cui posso puntarla. Sto usando l'androide-maven plug versione 3.2come faccio a modificare il mio AndroidManifest mentre è in fase di confezionamento da parte di Maven
risposta
Se si utilizzano configurazioni come manifestVersionCode o manifestVersionName per aggiornare manifesta, è così che è stato progettato e dovrebbe funzionare, scrive le modifiche alla AndroidManifest.xml originale.
Sembra che ciò di cui si ha veramente bisogno sia il manifest di filtro piuttosto che l'aggiornamento manifest. Il filtraggio delle risorse è un altro scenario di utilizzo supportato da Android-maven-plugin e frequentemente utilizzato.
AndroidManifest.xml Esempio:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mycompany.myapp"
android:versionCode="${app.version.code}"
android:versionName="${app.version.name}">
... ...
Esempio pom.xml:
<!-- value to be substituted in manifest -->
<properties>
<app.version.code>1</app.version.code>
<app.version.name>1.0.0-SNAPSHOT</app.version.name>
</properties>
... ...
<build>
<resources>
<!-- filter manifest and put filtered file in target/filtered-manifest/ -->
<resource>
<directory>${project.basedir}</directory>
<filtering>true</filtering>
<targetPath>${project.build.directory}/filtered-manifest</targetPath>
<includes>
<include>AndroidManifest.xml</include>
</includes>
</resource>
</resources>
... ...
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<undeployBeforeDeploy>true</undeployBeforeDeploy>
<!-- tell build process to use filtered manifest -->
<androidManifestFile>${project.build.directory}/filtered-manifest/AndroidManifest.xml</androidManifestFile>
</configuration>
</plugin>
... ...
Ora android-maven-plugin utilizzerà l'AndroidManifest.xml filtrata e lasciare l'AndroidManifest.xml originale invariata.
Spero che questo aiuti.
Aggiornamento:
si potrebbe essere necessario anche questo:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
vi consiglio di usare manifesta-aggiornamento obiettivo di Maven-android-plug per raggiungere questo obiettivo:
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.3.2</version>
<!-- This is for maven update properties in AndroidManifest file. Working outside eclipse. -->
<executions>
<execution>
<id>update-manifest</id>
<phase>process-resources</phase>
<goals>
<goal>manifest-update</goal>
</goals>
<configuration>
<manifest>
<versionCode>${project.codeVersion}</versionCode>
<versionName>${project.version}</versionName>
</manifest>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
è necessario definire anche project.codeVersion
:
<properties>
<project.codeVersion>1</project.codeVersion>
</properties>
E Maven aggiornerà il tuo AndroidManifest.xml:
[INFO] --- android-maven-plugin:3.3.2:manifest-update (update-manifest) @ myapp --- [INFO] Attempting to update manifest d:\dsv\project\MyApp\AndroidManifest.xml [INFO] Setting android:versionName to 0.0.4 [INFO] Setting android:versionCode to 1 [INFO] Made changes to manifest file, updating d:\...\MyApp\AndroidManifest.xml
Maggiori informazioni su Android: manifesti-update obiettivo here, è può trovare alcuni parametri utili lì.
Nota importante: Questa soluzione solo opere provenienti da riga di comando, il plugin di esecuzione non è ancora supportato da M2E-Android (si veda questo issue).
Completamente sbagliato, questo modifica il file XML originale. –
Questo è davvero lavoro per me anche se in questo modo modifica il file XML originale – acntwww
Non necessariamente sbagliato. In alcuni casi la modifica del file XML originale è esattamente ciò che si vuole che accada. – Matthias
- 1. Come modificare AndroidManifest in runtime?
- 2. Posso modificare la fase di distribuzione di Maven per sostituire il plugin maven-deploy-plug con il mio plugin?
- 3. Come rendere Maven "aggiungi voci di directory" durante il confezionamento?
- 4. Come faccio a sbarazzarmi di LD_LIBRARY_PATH in fase di esecuzione?
- 5. Come modificare il livello slf4j in fase di esecuzione?
- 6. Come testare l'abilità personalizzata di Amazon amazon attraverso il computer mentre è in fase di sviluppo?
- 7. Lettura dei dati da un file mentre è in fase di scrittura su
- 8. Come modificare il valore predefinito di $ {project.build.outputDirectory} in Maven?
- 9. Come modificare il codice javascript in fase di esecuzione?
- 10. Modificare la locale in fase di runtime?
- 11. Come è possibile modificare il colore di un'etichetta in fase di esecuzione in ActionScript 3.0?
- 12. Come modificare la priorità dei vincoli in fase di esecuzione
- 13. Come faccio a rendere il plugin maven jetty a conoscenza di una directory web aggiuntiva?
- 14. ottenendo la directory principale di $ {basedir} da parte di Maven
- 15. Come faccio a effettuare il downgrade del mio tipo di ingranaggio in openshift?
- 16. Come faccio a sapere quale file settings.xml sta usando maven
- 17. Gradle - Come ottenere valori da AndroidManifest?
- 18. Come faccio a smettere di Visual Studio 2008 da linee di confezionamento per la formattazione del codice
- 19. Il contesto non può essere utilizzato mentre il modello è in fase di creazione. dbContext viene utilizzato da qualche altra parte?
- 20. Come faccio a mantenere il numero di versione del mio script bash controllato da git source?
- 21. Come faccio a sapere il mio sistema disponibile Gradle buildToolsVersion
- 22. Confezionamento di più rpm in un file
- 23. Come faccio a sapere se il mio server ha NUMA?
- 24. Come faccio a rendere E1 + = E2 illegale mentre E1 = E1 + E2 è legale?
- 25. In IntelliJ, come faccio a eseguire il debug di un obiettivo di prova Maven?
- 26. Disabilita la registrazione con sospensione da parte di Maven
- 27. Come faccio a smettere di scorrere automaticamente nel mio flexslider
- 28. Specifica XML aggiuntivo per AndroidManifest generato da grad a
- 29. Come modificare il repository locale Maven in eclissi
- 30. Come faccio a sapere se il mio IE è a 64 bit? (Anche per Java?)
non sembra dare il via alla filtraggio prima che arrivi la fase in cui è necessario il manifesto filtrato .. ancora debug – danb
bisogno di questo: Maven-risorse-plugin 2.5 inizializzare risorse –
danb
@danb, sì, grazie per l'editing risposta. – yorkw