2008-10-15 22 views
112

¿Hay alguna manera de compilar un proyecto Java basado en Eclipse desde la línea de comandos?Generar proyecto Eclipse Java desde la línea de comandos

Estoy tratando de automatizar mi compilación (utilizando FinalBuilder no es la hormiga), y no soy experto en Java ni en Eclipse. Probablemente pueda averiguar cómo hacerlo con las opciones de línea de comando de java, pero luego el proyecto Eclipse se siente como un desperdicio de esfuerzo.

En el caso de que no haya forma de compilar un proyecto de Eclipse a través de la línea de comandos, ¿hay alguna manera de generar la línea de comando de java requerida desde Eclipse? ¿O hay algunos archivos que puedo explorar para encontrar los pasos de compilación detrás de las escenas?


chicos, estoy buscando una respuesta que NO incluyen hormigas. Permítanme volver a repetir la pregunta original ... ¿Hay alguna manera de construir un proyecto de Eclipse desde la línea de comando?

No creo que esta es una pregunta razonable dado que yo puedo hacer algo como esto para visual studio:

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

¡¿Cómo no hay un plugin/jar para esto! – Kieveli

+1

Ok ... Agregué una nueva respuesta correcta. – Kieveli

Respuesta

55

Se puede construir un proyecto de Eclipse a través de una espacio de trabajo desde la línea de comandos:

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

utiliza el jdt apt plugin para construir su espacio de trabajo de forma automática. Esto también se conoce como una "construcción sin cabeza". Maldita sea difícil de entender. Si no está utilizando un exe win32, puede intentar esto:

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

actualización Hace

varios años eclipsar reemplazado startup.jar con el "lanzador equinoccio"

https://wiki.eclipse.org/Equinox_Launcher

En 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 

El parámetro -data especifica la ubicación de su área de trabajo.

El número de versión del lanzador equinoccio dependerá de la versión del eclipse que tenga.

+3

Aunque hace tiempo que me mudé de este proyecto y no puedo verificar si esta respuesta funciona o no, estoy cambiando la respuesta aceptada a esta. Porque indica que Eclipse sí tiene un interruptor de línea de comando. –

+3

Solo una idea: parece que esto solo funciona para espacios de trabajo preexistentes. Supongo que esto hace que sea difícil, por ejemplo, verificar el proyecto desde el control de origen y compilarlo de esta manera. – John

+0

Creo que mi espacio de trabajo estaba comprometido con el repositorio svn. O tenía rutas relativas o estructuras de directorio coincidentes. – Kieveli

2

El apporoach normal, funciona al revés: Usted crea su construcción basada en maven o ant y luego usar integraciones para su IDE de elección para que sea independiente de él, que es especialmente. importante cuando tratas de poner a los nuevos miembros del equipo al día o usar un servidor de integración contundente para compilaciones automatizadas. Recomiendo usar maven y dejar que haga el trabajo pesado por ti. Crea un archivo pom y genera el proyecto de eclipse a través de mvn eclipse: eclipse. HTH

+4

Con frecuencia es mucho más agradable emular el flujo de trabajo actual en lugar de decirle a cada desarrollador que cambie su comportamiento. Especialmente cuando Eclipse es mucho más rápido que la hormiga. –

2

This question contiene algunos enlaces útiles en construcciones sin cabeza, pero están orientados principalmente a la construcción de complementos. No estoy seguro de cuánto de eso se puede aplicar a proyectos puros de Java.

-5

Lo que normalmente hace eclipse es CONSTRUIR solo archivos java. Dado que usted debe poder mirar el classpath del archivo .classpath y las fuentes requeridas del archivo .project y hacer un javac sobre eso. Debería ser bastante fácil.

+13

¡Si fuera fácil, entonces debería haber sido incluido en tu respuesta! – Kieveli

21

Para completar la respuesta de André, una solución de hormigas podría ser como el que se describe en Emacs, JDEE, Ant, and the Eclipse Java Compiler, como en:

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

El elemento compilerarg también permite pasar en args línea de comandos adicionales al compilador de Eclipse.

se puede encontrar una full ant script example here que sería invocan en una línea de comandos con:

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 

pero todo lo que implica la hormiga, que no es lo que Keith es después.

Para una compilación por lotes, por favor refiérase a Compiling Java code, especialmente la sección "Usando el compilador lotes" clase compilador

El lote se encuentra en el núcleo JDT plug-in. El nombre de la clase es org.eclipse.jdt.compiler.batch.BatchCompiler. Se empaqueta en plugins/org.eclipse.jdt.core_3.4.0..jar. Desde 3.2, también está disponible como descarga separada. El nombre del archivo es ecj.jar.
Desde 3.3, este jar también contiene el soporte para jsr199 (Compiler API) y el soporte para jsr269 (Proceso de anotación). Para utilizar el soporte de procesamiento de anotaciones, se requiere 1.6 VM.

Ejecución del compilador por lotes de la línea de comandos daría

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

o:

opciones de compilación
java -jar ecj.jar -classpath rt.jar A.java 

Todo Java se detalla en esa sección también.

La diferencia con la característica de compilación de línea de comandos de Visual Studio es que Eclipse no parece leer directamente su .project y .classpath en un argumento de línea de comandos. Debe informar toda la información contenida en .project y .classpath en varias opciones de línea de comandos para lograr el mismo resultado de compilación.

Entonces, la respuesta breve es: "sí, Eclipse tipo de cosas". ;)

+2

Es posible compilar un espacio de trabajo con el proyecto Eclipse utilizando el proyecto ant4eclipse, pero necesita una gran cantidad de esfuerzo, ya que debe realizar todos los pasos necesarios manualmente en función de la metainformación que extraiga. Lo hice para nuestros proyectos internos, ¡pero no lo recomendaría a menos que REALMENTE lo necesites! Lo hicimos :-D –

+0

@ Thorbjørn Ravn Andersen: gracias por este comentario.También podría publicar una respuesta en este hilo que ilustre el tipo de "grasa en el codo" involucrada aquí;) – VonC

+0

bueno, lo que pirateé juntos en ant4eclipse, que requiere un archivo projectSet.psf, para emular la funcionalidad "exportar jar ejecutable" isn 't bonito por lo tanto, no hay respuesta. Además, no ejecuta Eclipse, sino que emula Eclipse usando hormiga: D –

-3

Respuesta corta. No. Eclipse no tiene un modificador de línea de comandos como Visual Studio para construir un proyecto.

+3

Respuesta corta: sí. Eclipse tipo de hace. Excepto que tiene que informar toda la información contenida en el .project y .classpath en varias opciones de línea de comandos. – VonC

+0

Las soluciones de compilación externa (a Eclipse) como ant o maven se usan normalmente para esto, como se señala en otras respuestas. –

0

Hola, solo además de los comentarios de VonC. Estoy usando el compilador ecj para compilar mi proyecto. estaba arrojando la expceción de que algunas de las clases no se encuentran. Pero el proyecto estaba construyendo bien con el compilador javac.

Así que he añadido a las clases en la ruta de clase (que tenemos que pasar como argumento) y ahora su trabajo bien ... :)

Kulbir Singh

5

Después de 27 años, yo también estoy incómodo desarrollando en un IDE.Probé estas sugerencias (arriba), y probablemente no seguí todo bien, así que hice una búsqueda web y encontré lo que funcionó para mí en 'http://incise.org/android-development-on-the-command-line.html'.

La respuesta parecía ser una combinación de todas las respuestas anteriores (por favor dígame si me equivoco y acepte mis disculpas si es así).

Como se mencionó anteriormente, eclipse/adt no crea los archivos ant necesarios. Para compilar sin IDE Eclipse (y sin crear scripts Ant):

1) Generar build.xml en el directorio de nivel superior:

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) siguiente que compila el proyecto. Estaba un poco confundido por la solicitud de no usar 'hormiga'. Afortunadamente, el solicitante quiso decir que no quería escribir ninguna secuencia de comandos ant. Digo esto porque el siguiente paso es compilar la aplicación mediante la hormiga

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) Para instalar el apk en el dispositivo tuviera que utilizar hormiga nuevo:

ant target install 

    ** my command line looked like ant debug install 

4) Para ejecutar el proyecto en mi teléfono Android uso 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) una nota: Para ver el registro del uso del dispositivo:

adb logcat 

3B) Una segunda nota lateral: El enlace mencionado anteriormente también incluye instrucciones para la construcción de todo el proyecto del comando .

Afortunadamente, esto ayudará con la pregunta. Sé que estaba realmente feliz de encontrar cualquier cosa sobre este tema aquí.

+1

si el proyecto ya está creado (en modo de depuración f.ex.) puedes usar 'ant installd' para instalar sin construir –

1

Solo quería agregar mis dos centavos a esto. He intentado hacer como @Kieveli sugiere para no win32 (repetida más adelante), pero no funcionó para mí (en CentOS con Eclipse: Luna):

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

En mi configuración en particular en CentOS utilizando Eclipse (Luna) esta trabajó:

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

La salida debería ser algo como esto:

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 

No estoy seguro de por qué aparentemente lo hace dos veces, pero parece que funciona.

Cuestiones relacionadas