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"
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.
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." ;)
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.
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
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.
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.
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