32 votes

Est-il possible de configurer un projet IntelliJ Android pour qu'il fonctionne avec Maven ?

Je veux travailler avec les dépendances Maven dans un projet IntelliJ Android. Est-ce que quelqu'un a réussi à le faire ?

0 votes

Moi-même et beaucoup d'autres le faisons tous les jours... et les conseils de Roberto sont corrects à tous égards.

44voto

Roberto Tyley Points 4352

J'utilise IntelliJ IDEA (actuellement v11.0.2, build 111.277) sur Ubuntu 11.10 et Mac OS X 10.7.3 pour travailler sur des projets Android basés sur Maven, et pour la plupart cela fonctionne bien. L'avantage d'utiliser IntelliJ avec Android et Maven est que tout le support est déjà intégré - il n'y a pas de plugins IDE supplémentaires à installer.

Comme exemple de projet Maven Android fonctionnel qui peut être ouvert avec IntelliJ, vous pouvez utiliser le code source de l'application open-source Gaug.es pour Android par GitHub (tous les développeurs de GitHub n'utilisent pas IntelliJ, personnellement c'est mon cas - Eclipse est également utilisé pour travailler sur ce projet).

La première étape pour un bon fonctionnement est évidemment de s'assurer que votre projet se construit correctement en utilisant uniquement Maven en ligne de commande - bien que la question ne porte pas directement sur ce point, je conseillerais ces pré-requis comme un strict minimum :

  • Java 6
  • Maven v3.0.3
  • Android-maven-plugin v3.1.1
  • Android SDK r16 (si vous avez téléchargé votre SDK avant la r15, vous feriez mieux d'effacer l'ensemble et de le télécharger à nouveau, car la disposition des répertoires a changé).

Si vous le pouvez mvn install le pom parent de votre projet, vous êtes prêt à travailler avec lui avec IntelliJ.

  • Si c'est la première fois que vous ouvrez le projet avec IntelliJ, vous pouvez toujours l'ouvrir en tant que projet, il vous suffit de sélectionner le fichier pom.xml parent dans la boîte de dialogue 'Open Project'.
  • S'assurer qu'IntelliJ sait où se trouve le SDK Java . IntelliJ, même s'il fonctionne sur Java, ne détecte pas automatiquement l'emplacement des SDK. Vous devez le lui indiquer. Aller Project Structure , Platform Settings , SDKs puis modifiez le SDK Java s'il apparaît en rouge, en lui donnant le chemin de votre SDK Java 6.
  • Dans le même Project Structure Dans la fenêtre de dialogue, définissez l'option Project SDK à la version appropriée d'Android, et sous Project fixer le Project compiler output à un nom de répertoire de votre choix - cette valeur est nécessaire pour faire un 'Make', mais elle est aussi surchargée par vos submodules pour pointer de manière sensible vers les répertoires 'target' de Maven.
  • Vérifiez que toutes les informations Maven ont été analysées par IntelliJ. Vous devriez avoir un Maven Projects tab. Cliquez sur l'onglet Reimport All Maven Projects (on dirait deux flèches qui se poursuivent l'une l'autre). Si IntelliJ vous demande d'activer l'importation automatique, faites-le. Vous devriez maintenant avoir au moins un module listé sous la rubrique Maven Projects tab, plus si vous avez également un projet de test d'intégration.

À ce stade, vous devriez avoir une expérience assez significative de l'IDE. Des choses qui devraient fonctionner :

  • Aucun code ne doit être souligné en rouge sans raison apparente.
  • Toutes les importations (qu'elles proviennent du SDK Android, de Java, de votre propre code ou d'apklibs) doivent être reconnues. Notez que la prise en charge des apklibs n'est apparue que tardivement avec IntelliJ IDEA v10.5.
  • Opérations de remaniement.
  • Force regenerate R.java file devrait rafraîchir correctement le fichier sous target/generated-sources/r/... - mais cela ne semble fonctionner que si target/generated-sources/r est déjà défini comme chemin source, c'est-à-dire qu'il a été généré par Maven et importé par IntelliJ. L'alternative minimale en ligne de commande est d'exécuter mvn android:generate-sources à partir de la ligne de commande dans le dossier du module concerné.
  • Faire un "Make" du projet dans l'IDE fonctionne techniquement, mais peut aussi échouer pour la même raison. J'invoque toutes mes constructions en utilisant la commande mvn package o install à la ligne de commande.

Des choses qui pourraient ne pas fonctionner :

  • L'exécution de tests d'intégration individuels à partir de l'IDE (matrices avec ClassNotFoundException: junit.textui.ResultPrinter )

Si IntelliJ s'embrouille, les étapes suivantes vous permettront normalement de revenir sur la bonne voie :

  • mvn clean install sur la ligne de commande
  • Appuyer sur la touche Reimport All Maven Projects bouton

Quelques conseils :

  • Vos fichiers Maven pom.xml doivent être la source de vérité pour la configuration de votre projet. Minimisez la configuration spécifique à IntelliJ que vous faites dans les paramètres du projet - certains d'entre eux seront susceptibles d'être effacés la prochaine fois que les paramètres seront réimportés à partir du POM Maven - et essayez d'éviter de commettre des fichiers de projet IntelliJ dans le contrôle de la source.

J'espère que cela vous aidera !

0 votes

Je n'arrive pas à trouver comment ouvrir le projet Gaug.es dans IntelliJ avec Maven et le support Android. Pourriez-vous me donner un indice, s'il vous plaît ?

0 votes

@sealskej, pouvez-vous me dire où les choses commencent à mal tourner dans les instructions ci-dessus ? Êtes-vous en mesure d'effectuer une mvn install ?

0 votes

J'ai mentionné mon problème dans le message d'Anatoliy.

12voto

Anatoliy Points 400

Voir Démarrer avec le plugin maven-Android .

Voici la commande que vous pouvez utiliser pour créer un modèle de travail sampe avec la structure Maven :

mvn archetype:generate \
  -DarchetypeArtifactId=android-with-test \
  -DarchetypeGroupId=de.akquinet.android.archetypes \
  -DarchetypeVersion=1.1.0 \
  -DgroupId=com.foo.bar \
  -DartifactId=my-android-project \
  -Dpackage=com.foo.bar.android

BTW, IntelliJ a un support intégré pour maven, il suffit donc d'ouvrir pom.xml à partir de celui-ci - et tout ira bien.

0 votes

Merci. Je suis capable d'ouvrir pom.xml dans IntelliJ, mais comment puis-je exécuter l'application dans l'émulateur ou dans l'appareil ? A partir de l'interpréteur de commandes ou puis-je utiliser une fonction intégrée ? Le bouton "run" est grisé dans mon IntelliJ en utilisant pom.xml ouvert.

1 votes

Il semble que j'aie moi-même trouvé le problème. J'ai dû créer manuellement la configuration d'exécution. Merci de votre compréhension.

0 votes

Les gars, pourquoi mettez-vous un vote négatif sur ma réponse ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X