Trabajo con muchos proyectos java pequeños pero no relacionados. Hice un script Ant que crea .project y .classpath automáticamente cada vez que creo un nuevo proyecto, con las bibliotecas necesarias y el nombre del proyecto. Me gustaría poder abrir Eclipse con ese proyecto, desde la línea de comandos. En este momento lo hago de forma manual, cerrando el viejo proyecto abierto en el área de trabajo, luego hago una importación y encuentro el nuevo proyecto. No pude encontrar una manera de hacerlo desde Ant o por lotes. Puedo abrir Eclipse, pero aparece el último espacio de trabajo/proyecto. No me importa si tendría que crear un espacio de trabajo/proyecto individual, pero no sé cómo hacerlo desde un script. Gracias por cualquier sugerencia.abrir un proyecto de eclipse específico desde la línea de comando
Respuesta
yo recomendaría en contra de hacer esto, ya que no es realmente mucho esfuerzo importar el proyecto usando los asistentes estándar. Me centraría en cerrar los proyectos inactivos (ver más abajo).
Editar: Si no está seguro de usar hormiga para llevar los proyectos al espacio de trabajo, puede implementar un complemento que haga algo como el siguiente código.
¿Cierra los proyectos anteriores o los elimina? No veo ninguna razón para eliminarlos. Si cierra todos los proyectos en los que no está trabajando (haga clic derecho en ellos y seleccione cerrar proyecto o seleccione el proyecto que desea y haga clic derecho-> cerrar proyectos no relacionados), la plataforma los ignorará, por lo que no afectará el desarrollo de el proyecto abierto.
Para ocultar los proyectos cerrados desde el punto de vista, puede hacer clic en los que apunta hacia abajo triángulo en la esquina superior derecha de la vistaExplorador de paquetes, seleccione Filtros ... y en el Seleccionar los elementos a excluir de la vista: lista marca proyectos cerrados opción.
Este es un plugin que leerá un conjunto de nombres de un archivo en la raíz del espacio de trabajo, eliminar todos los proyectos existentes (sin quitar el contenido) y crear los nuevos proyectos en el área de trabajo. El uso es bajo su propio riesgo, sin responsabilidad, bla, bla.
Tome los contenidos y colóquelos en los archivos pertinentes y puede empaquetar un plugin de Eclipse. Recomiendo usar una instalación de Eclipse por separado (en realidad, recomiendo no usarla en absoluto), ya que se ejecutará cada vez que encuentre los nuevos proyectos.txt en la raíz del espacio de trabajo.
La declaración en el plugin.xml implementa un punto de extensión de Eclipse que se invoca después de que se inicializa el banco de trabajo. Se llama al método earlyStartup() del StartupHelper. Crea un Runnable nuevo que se ejecuta de forma asincrónica (esto significa que la carga del espacio de trabajo no se bloqueará si este plugin tiene problemas). Runnable lee líneas del archivo magic newprojects.txt que espera ver en la raíz del espacio de trabajo. Si encuentra algún contenido, eliminará/creará los proyectos.
Actualización: El ayudante se ha modificado para permitir que los proyectos se crean fuera del área de trabajo, si se define un valor en newprojects.txt se supone que es el URI absoluto del proyecto. Tenga en cuenta que no escapa a la cadena, por lo que si se encuentra en una plataforma de Windows, use barras dobles en la ruta.
contenidos Ejemplo:
#will be created in the workspace
project1
#will be created at c:\test\project2
project2=c:\\test\project2
buena suerte!
/META-INF/MANIFEST.MF:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Project fettling Plug-in
Bundle-SymbolicName: name.seller.rich;singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: name.seller.rich.Activator
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui.workbench;bundle-version="3.4.1",
org.eclipse.swt;bundle-version="3.4.1",
org.eclipse.core.resources;bundle-version="3.4.1"
Bundle-ActivationPolicy: lazy
/plugin.xml:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension
point="org.eclipse.ui.startup">
<startup class="name.seller.rich.projectloader.StartupHelper"/>
</extension>
</plugin>
/.project:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>name.seller.rich.projectloader</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
/.classpath:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
/src/main/java/name/seller/rich/Activator.java:
package name.seller.rich;
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle
*/
public class Activator extends Plugin {
// The plug-in ID
public static final String PLUGIN_ID = "name.seller.rich";
// The shared instance
private static Activator plugin;
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static Activator getDefault() {
return plugin;
}
/**
* The constructor
*/
public Activator() {
}
@Override
public void start(final BundleContext context) throws Exception {
super.start(context);
plugin = this;
}
@Override
public void stop(final BundleContext context) throws Exception {
plugin = null;
super.stop(context);
}
}
/src/main/java/nombre/vendedor/rico/projectloader/StartupHelper .java:
package name.seller.rich.projectloader;
import java.io.File;
import java.io.FileInputStream;
import java.util.Map;
import java.util.Properties;
import name.seller.rich.Activator;
import org.eclipse.core.internal.resources.ProjectDescription;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.ui.IStartup;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
public class StartupHelper implements IStartup {
private static final class DirtyHookRunnable implements Runnable {
private IWorkspaceRoot workspaceRoot;
private DirtyHookRunnable(final IWorkspaceRoot workspaceRoot) {
this.workspaceRoot = workspaceRoot;
}
public void run() {
try {
IPath workspaceLocation = this.workspaceRoot.getLocation();
File startupFile = new File(workspaceLocation.toOSString(),
"newprojects.txt");
IProgressMonitor monitor = new NullProgressMonitor();
Properties properties = new Properties();
if (startupFile.exists()) {
properties.load(new FileInputStream(startupFile));
}
if (properties.size() > 0) {
// delete existing projects
IProject[] projects = this.workspaceRoot.getProjects();
for (IProject project : projects) {
// don't delete the content
project.delete(false, true, monitor);
}
// create new projects
for (Map.Entry entry : properties.entrySet()) {
IProject project = this.workspaceRoot
.getProject((String) entry.getKey());
// insert into loop
ProjectDescription projectDescription = new ProjectDescription();
projectDescription.setName((String) entry.getKey());
String location = (String) entry.getValue();
// value will be empty String if no "=" on the line
// in that case it will be created in the workspace
// WARNING, currently windows paths must be escaped,
// e.g. c:\\test\\myproject
if (location.length() > 0) {
IPath locationPath = new Path(location);
projectDescription.setLocation(locationPath);
}
project.create(projectDescription, monitor);
// project.create(monitor);
project.open(monitor);
}
}
} catch (Exception e) {
IStatus status = new Status(IStatus.INFO, Activator.PLUGIN_ID,
0, "unable to load new projects", null);
Activator.getDefault().getLog().log(status);
}
}
}
public StartupHelper() {
super();
}
public final void earlyStartup() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
workbench.getDisplay().asyncExec(new DirtyHookRunnable(workspaceRoot));
}
}
solución parcial: Eclipse abierto en un espacio de trabajo especificado:
eclipse.exe -datos c: \ code \ nombre-área-
Como se mencionó, ya puedo hacerlo, pero no es de mucha ayuda. Todavía tengo que cerrar el proyecto anterior y pasar por importación para abrir el nuevo. – alex
Otro possible option se da en this question. La esencia de la respuesta es, si ha instalado CDT, que puede hacer:
eclipse -nosplash
-application org.eclipse.cdt.managedbuilder.core.headlessbuild
-import {[uri:/]/path/to/project}
-importAll {[uri:/]/path/to/projectTreeURI} Import all projects under URI
-build {project_name | all}
-cleanBuild {projec_name | all}
El truco aquí es que puede importar cualquier proyecto, no sólo los proyectos de C.
- 1. Crear un proyecto de Eclipse en la línea de comando?
- 2. proyecto de importación de eclipse usando la línea de comando
- 3. ¿Cómo construyes un proyecto IntelliJ desde la línea de comando?
- 4. Ejecutar proyecto de Eclipse desde la línea de comandos
- 5. Generar proyecto Eclipse Java desde la línea de comandos
- 6. Creando el proyecto Xcode desde la línea de comando
- 7. Visual Studio. Publicar proyecto desde la línea de comando
- 8. Java - Construir y ejecutar el proyecto eclipse desde la línea de comando
- 9. Usando eclipse comparator desde la línea de comando
- 10. MSBuild: especificando un destino desde la línea de comando
- 11. cómo abrir un proyecto en Eclipse
- 12. Oracle sqldeveloper - cómo conectar DB desde la línea de comando
- 13. ¿Cómo hacer que eclipse lance un programa en el eclipse workbench desde la línea de comando?
- 14. svn línea de comando de eclipse
- 15. Abrir terminal desde Eclipse
- 16. MacVim: cree un archivo nuevo desde la línea de comando utilizando `alias mvim =" abrir -macrovim "`
- 17. abrir proyecto existente de Java en eclipse
- 18. Uso de la línea de comando desde Visual Studio
- 19. ¿Cómo evaluar un cuaderno desde la línea de comando?
- 20. Mover archivos desde la línea de comando
- 21. Entrada desde la línea de comando
- 22. instrucción sqlplus desde la línea de comando
- 23. ¿Es posible publicar un FLA desde la línea de comando?
- 24. Ejecutando un objetivo de plugin Maven específico desde la línea de comando en un submódulo de un proyecto de reactor de varios módulos
- 25. Abrir un archivo desde argumentos de línea de comando en C
- 26. Sobrescribir el marco de destino desde la línea de comando
- 27. Cómo sincronizar el directorio FTP desde la línea de comando?
- 28. ¿Cómo abrir un proyecto desde el área de trabajo en eclipse?
- 29. Ejecutar el comando vim desde la línea de comandos
- 30. Cómo abrir un proyecto SVN existente en Eclipse
Antes que nada, gracias por responder. Esta es una toma interesante y voy a verla, pero puede parecer un poco fuera del camino. Algunas palabras más sobre mi configuración: generamos proyectos Java (.java, recursos) a través del preprocesamiento desde una base de código "maestro". Luego retocamos y compilamos en tarros. De vez en cuando tenemos que depurar en Eclipse, momento en el que creamos un proyecto manualmente e importamos el origen, res y bibliotecas. Hice que este proceso sea ahora automático, y me gustaría finalizar la generación de código abriendo Eclipse con el proyecto recién creado. Los proyectos antiguos son desechables (cerrados/eliminados). – alex
No estoy decidido a usar Ant, todo vale, incluido el lote (plataforma Win). – alex
esto es un poco un truco, pero podría definir un complemento que verifique un archivo conocido para el proyecto "nuevo" en el inicio de Eclipse. Al implementar la interfaz IStartup, se llamará al método earlyStartup() y podrá crear el proyecto como se indicó anteriormente. Si tengo algo de tiempo, elaboraré una respuesta más detallada –