124 votes

Construire un projet Java Eclipse à partir de la ligne de commande

Existe-t-il un moyen de compiler un projet Java basé sur Eclipse à partir de la ligne de commande ?

J'essaie d'automatiser ma construction (en utilisant FinalBuilder et non ant), et je ne suis ni un expert de Java ni d'Eclipse. Je peux probablement trouver un moyen de le faire avec les options de la ligne de commande java, mais le projet Eclipse me semble alors une perte de temps.

Dans le cas où il n'y a aucun moyen de compiler un projet Eclipse via la ligne de commande, existe-t-il un moyen de générer la ligne de commande java requise depuis Eclipse ? Ou bien existe-t-il des fichiers dans lesquels je peux fouiller pour trouver les étapes de compilation qu'il effectue en coulisse ?


Les gars, je cherche une réponse qui fait PAS inclure les fourmis. Permettez-moi de réitérer la question initiale ........ Existe-t-il un moyen de construire un projet Eclipse à partir de la ligne de commande ?

Je ne pense pas que ce soit une question déraisonnable étant donné que je peux faire quelque chose comme ça pour Visual Studio :

devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"

66voto

Kieveli Points 7162

Vous pouvez construire un projet eclipse via un espace de travail à partir de la ligne de commande :

eclipsec.exe -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

Il utilise le jdt apt pour construire automatiquement votre espace de travail. Ceci est également connu sous le nom de "Headless Build". C'est très difficile à comprendre. Si vous n'utilisez pas un exe win32, vous pouvez essayer ceci :

java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild

22voto

VonC Points 414372

Pour compléter la réponse d'André, une solution fourmi pourrait être comme celle décrite dans Emacs, JDEE, Ant et le compilateur Java d'Eclipse comme dans :

      <javac
          srcdir="${src}"
          destdir="${build.dir}/classes"> 
        <compilerarg 
           compiler="org.eclipse.jdt.core.JDTCompilerAdapter" 
           line="-warn:+unused -Xemacs"/>
        <classpath refid="compile.classpath" />
      </javac>

L'élément compilerarg vous permet également de transmettre des arguments de ligne de commande supplémentaires au compilateur eclipse.

Vous pouvez trouver un exemple complet de ant script ici qui serait invoqué dans une ligne de commande avec :

java -cp C:/eclipse-SDK-3.4-win32/eclipse/plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar org.eclipse.core.launcher.Main -data "C:\Documents and Settings\Administrator\workspace" -application org.eclipse.ant.core.antRunner -buildfile build.xml -verbose

Mais tout cela implique des fourmis, ce qui n'est pas ce que Keith recherche.

Pour une compilation par lots, veuillez vous référer à Compilation du code Java notamment la section " Utilisation du compilateur batch "

La classe du compilateur batch est située dans le plug-in JDT Core. Le nom de la classe est org.eclipse.jdt.compiler.batch.BatchCompiler. Elle est empaquetée dans plugins/org.eclipse.jdt.core_3.4.0..jar. Depuis la version 3.2, il est également disponible en téléchargement séparé. Le nom du fichier est ecj.jar.
Depuis la version 3.3, ce jar contient également le support pour jsr199 (API du compilateur) et le support pour jsr269 (traitement des annotations). Afin d'utiliser le support du traitement des annotations, une VM 1.6 est nécessaire.

L'exécution du compilateur batch à partir de la ligne de commande donnerait

java -jar org.eclipse.jdt.core_3.4.0<qualifier>.jar -classpath rt.jar A.java

ou :

java -jar ecj.jar -classpath rt.jar A.java

Toutes les options de compilation java sont également détaillées dans cette section.

La différence avec la fonction de compilation de la ligne de commande de Visual Studio est que Eclipse ne semble pas pouvoir lire directement son .project et son .classpath dans un argument de ligne de commande. . Vous devez reporter toutes les informations contenues dans le .project et le .classpath dans diverses options de ligne de commande afin d'obtenir le même résultat de compilation.

Donc, la réponse courte est : "oui, Eclipse le fait en quelque sorte" ;)

8voto

Charles Thomas Points 31

Après 27 ans, moi aussi, je ne suis pas à l'aise pour développer dans un IDE. J'ai essayé ces suggestions (ci-dessus) - et je n'ai probablement pas tout suivi correctement - alors j'ai fait une recherche sur le web et j'ai trouvé ce qui a fonctionné pour moi à ' http://incise.org/Android-development-on-the-command-line.html '.

La réponse semble être une combinaison de toutes les réponses ci-dessus (veuillez me dire si je me trompe et accepter mes excuses si c'est le cas).

Comme mentionné ci-dessus, eclipse/adt ne crée pas les fichiers ant nécessaires. Afin de compiler sans l'IDE eclipse (et sans créer les scripts ant) :

1) Générez le fichier build.xml dans votre répertoire de premier niveau :

android list targets  (to get target id used below)

android update project --target target_id --name project_name  --path top_level_directory

   ** my sample project had a target_id of 1 and a project name of 't1', and 
   I am building from the top level directory of project
   my command line looks like android update project --target 1 --name t1 --path `pwd`

2) Ensuite, je compile le projet. J'ai été un peu confus par la demande de ne pas utiliser 'ant'. J'espère que le demandeur voulait dire qu'il ne voulait pas écrire de scripts ant. Je dis ceci parce que l'étape suivante consiste à compiler l'application en utilisant ant.

 ant target

    this confused me a little bit, because i thought they were talking about the
    android device, but they're not.  It's the mode  (debug/release)
    my command line looks like  ant debug

3) Pour installer l'apk sur l'appareil, j'ai dû utiliser ant à nouveau :

 ant target install

    ** my command line looked like  ant debug install

4) Pour exécuter le projet sur mon téléphone Android, j'utilise adb.

 adb shell 'am start -n your.project.name/.activity'

    ** Again there was some confusion as to what exactly I had to use for project 
    My command line looked like adb shell 'am start -n com.example.t1/.MainActivity'
    I also found that if you type 'adb shell' you get put to a cli shell interface
    where you can do just about anything from there.

3A) Remarque : Pour afficher le journal à partir de l'appareil, utilisez :

 adb logcat

3B) Une deuxième remarque : le lien mentionné ci-dessus comprend également des instructions pour construire le projet entier à partir de la commande.

J'espère que cela répondra à votre question. Je sais que j'étais vraiment heureux de trouver tout ce qui est sur ce sujet ici.

6voto

André Points 4833

L'apporoach normal fonctionne dans l'autre sens : Vous créez votre build en vous basant sur maven o fourmi puis utilisez des intégrations pour l'IDE de votre choix afin d'être indépendant de celui-ci, ce qui est particulièrement important lorsque vous essayez de mettre les nouveaux membres de l'équipe au courant ou d'utiliser un serveur d'intégration commun pour les constructions automatisées. Je recommande d'utiliser maven et de le laisser faire le gros du travail pour vous. Créez un fichier pom et générez le projet eclipse via mvn eclipse:eclipse. HTH

2voto

JesperE Points 34356

Cette question contient quelques liens utiles sur les constructions sans tête, mais ils sont surtout orientés vers la construction de plugins. Je ne suis pas sûr qu'une grande partie de ces informations puisse être appliquée à des projets purement Java.

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