web-dev-qa-db-fra.com

Construire Eclipse Java Projet depuis 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 (avec FinalBuilder, pas avec ant), et je ne suis ni un expert Java ni Eclipse. Je peux probablement trouver comment faire cela avec straight Java, mais le projet Eclipse donne l'impression de perdre beaucoup d'efforts.

Au cas où il n'y aurait 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 à partir d'Eclipse? Ou y a-t-il des fichiers que je peux piquer? autour de trouver les étapes de compilation qu'il fait dans les coulisses?


Les gars, je cherche une réponse qui fait PAS inclure ant. Permettez-moi de répéter la question initiale ....... Y a-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"
116
Keith G

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 plugin jdt apt Pour construire automatiquement votre espace de travail. Ceci est également connu comme une "construction sans tête". Zut difficile à comprendre. Si vous n'utilisez pas un fichier exe win32, vous pouvez essayer ceci:

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

Mettre à jour

Il y a plusieurs années, Eclipse a remplacé startup.jar Par le "lanceur d'équinoxe"

https://wiki.Eclipse.org/Equinox_Launcher

Sur Eclipse Mars (MacOX):

Java -jar /Applications/Eclipse.app/Contents/Eclipse/plugins/org.Eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -noSplash -data "workspace" -application org.Eclipse.jdt.apt.core.aptBuild

Le paramètre -data Spécifie l'emplacement de votre espace de travail.

Le numéro de version du lanceur d'équinoxe dépend de votre version d'Eclipse.

59
Kieveli

Pour compléter la réponse d'André, une solution ant pourrait être semblable à celle décrite dans Emacs, JDEE, Ant et Eclipse Java Compilateur , 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 script ant 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 ce qui concerne ant, ce qui n'est pas ce que Keith est après.

Pour une compilation par lots, veuillez vous référer à Compiler Java, en particulier la section " Utilisation du compilateur par lots "

La classe du compilateur de traitement par lots est située dans le plug-in JDT Core. Le nom de la classe est org.Eclipse.jdt.compiler.batch.BatchCompiler. Il est emballé dans plugins/org.Eclipse.jdt.core_3.4.0..jar. Depuis 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 fichier jar contient également le support de jsr199 (API du compilateur) et le support de jsr269 (traitement des annotations). Pour utiliser le support de traitement des annotations, un 1.6 VM est requis.

Exécuter le compilateur batch 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 ligne de commande de Visual Studio est que Eclipse ne semble pas lire directement ses .project et .classpath dans un argument de ligne de commande. Pour obtenir le même résultat de compilation, vous devez signaler toutes les informations contenues dans .project et .classpath dans différentes options de ligne de commande.

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

22
VonC

Après 27 ans, je suis moi aussi mal à l'aise de développer une IDE. J'ai essayé ces suggestions (ci-dessus) - et probablement je n'ai pas tout suivi correctement - alors j'ai fait une recherche sur le Web et j'ai trouvé ce qui fonctionnait pour moi à ' http://incise.org/Android-development- sur-la-commande-line.html '.

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

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

1) Générez build.xml dans votre répertoire de niveau supérieur:

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'étais un peu dérouté par la demande de ne pas utiliser 'ant'. Espérons que - demandeur voulait dire qu'il ne voulait pas écrire de scripts ant. Je dis cela parce que l'étape suivante consiste à compiler l'application à l'aide de 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, je devais utiliser à nouveau ant:

 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) Note: Pour afficher le journal de l’appareil, utilisez:

 adb logcat

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

Espérons que cela aidera avec la question. Je sais que j'étais vraiment heureux de trouver quelque chose sur ce sujet ici.

8
Charles Thomas

L’apporoach normal fonctionne dans l’inverse: vous créez votre build sur la base de maven ou ant , puis vous utilisez des intégrations pour votre IDE de votre choix) afin que vous en soyez indépendant, ce qui est particulièrement important lorsque vous essayez d'inciter les nouveaux membres de votre équipe à utiliser un serveur d'intégration compliqué pour les générations automatisées. Je recommande d'utiliser maven et de le laisser faire le travail lourd pour vous. un fichier pom et générer le projet Eclipse via mvn Eclipse: eclipse. HTH

4
André

Cette question contient des liens utiles sur les builds sans tête, mais ils sont principalement destinés à la construction de plugins. Je ne sais pas trop quelle quantité peut être appliquée à des projets purs Java.

2
JesperE

Je voulais juste ajouter mes deux cents à cela. J'ai essayé de faire comme l'a suggéré @Kieveli pour non win32 (répété ci-dessous) mais cela n'a pas fonctionné pour moi (sur CentOS avec Eclipse: Luna):

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

Sur ma configuration particulière sur CentOS utilisant Eclipse (Luna), cela a fonctionné:

$Eclipse_HOME/Eclipse -nosplash -application org.Eclipse.jdt.apt.core.aptBuild  startup.jar -data ~/workspace

La sortie devrait ressembler à ceci:

Building workspace
Building '/RemoteSystemsTempFiles'
Building '/test'
Invoking 'Java Builder' on '/test'.
Cleaning output folder for test
Build done
Building workspace
Building '/RemoteSystemsTempFiles'
Building '/test'
Invoking 'Java Builder' on '/test'.
Preparing to build test
Cleaning output folder for test
Copying resources to the output folder
Analyzing sources
Compiling test/src/com/company/test/tool
Build done

Je ne sais pas trop pourquoi apparemment il l'a fait deux fois, mais cela semble fonctionner.

1
jkwinn26

Bonjour Juste ajout aux commentaires de VonC. J'utilise le compilateur ecj pour compiler mon projet. il y avait un risque que certaines classes ne soient pas trouvées. Mais le projet fonctionnait parfaitement avec le compilateur javac.

Donc, je viens d'ajouter les classes dans le classpath (que nous devons passer en argument) et maintenant cela fonctionne bien ... :)

Kulbir Singh

0
Kulbir Singh