Construya el proyecto Eclipse Java desde la línea de comandos
¿Existe alguna forma de compilar un proyecto Java basado en Eclipse desde la línea de comandos?
Estoy intentando automatizar mi compilación (usando FinalBuilder, no ant), y no soy un experto en Java ni en Eclipse. Probablemente pueda descubrir cómo hacer esto con opciones directas de la línea de comandos de Java, pero luego el proyecto Eclipse parece un gran esfuerzo desperdiciado.
En el caso de que no haya forma de compilar un proyecto de Eclipse a través de la línea de comando, ¿hay alguna manera de generar la línea de comando Java requerida desde Eclipse? ¿O hay algunos archivos que puedo explorar para encontrar los pasos de compilación que se realizan detrás de escena?
Chicos, estoy buscando una respuesta que NO incluya a la hormiga. Permítanme reiterar la pregunta original... ¿Hay alguna forma de crear un proyecto Eclipse desde la línea de comandos?
No creo que esta sea una pregunta irrazonable dado que puedo hacer algo como esto para Visual Studio:
devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"
Puede crear un proyecto de eclipse a través de un espacio de trabajo desde la línea de comando:
eclipsec.exe -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild
Utiliza el jdt apt
complemento para crear su espacio de trabajo automáticamente. Esto también se conoce como "construcción sin cabeza". Es muy difícil de entender. Si no estás usando un exe win32, puedes probar esto:
java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild
Actualizar
Hace varios años, el eclipse fue reemplazado startup.jar
por el "lanzador de equinoccio".
https://wiki.eclipse.org/Equinox_Launcher
En Eclipse Marte (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 -data
parámetro especifica la ubicación de su espacio de trabajo.
El número de versión del iniciador equinox dependerá de la versión de eclipse que tengas.
Para completar la respuesta de André, una solución ant podría ser como la descrita en Emacs, JDEE, Ant y 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 le permite pasar argumentos de línea de comando adicionales al compilador de eclipse.
Puede encontrar un ejemplo completo de script ant aquí que se invocaría en una línea de comando 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 eso involucra a una hormiga, que no es lo que Keith busca.
Para una compilación por lotes, consulte Compilación de código Java , especialmente la sección " Uso del compilador por lotes " .
La clase del compilador por lotes se encuentra en el complemento JDT Core. El nombre de la clase es org.eclipse.jdt.compiler.batch.BatchCompiler. Está empaquetado en plugins/org.eclipse.jdt.core_3.4.0..jar. Desde la versión 3.2, también está disponible como descarga independiente. El nombre del archivo es ecj.jar.
Desde la versión 3.3, este jar también contiene soporte para jsr199 (API del compilador) y soporte para jsr269 (procesamiento de anotaciones). Para utilizar el soporte de procesamiento de anotaciones, se requiere una VM 1.6.
Ejecutar el compilador por lotes desde la línea de comando daría
java -jar org.eclipse.jdt.core_3.4.0<qualifier>.jar -classpath rt.jar A.java
o:
java -jar ecj.jar -classpath rt.jar A.java
Todas las opciones de compilación de Java también se detallan en esa sección.
La diferencia con la función 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 corta es: "sí, Eclipse más o menos lo hace". ;)