Categorías
Java Development Tools (JDT)

Tutorial de Eclipse JDT: carga dinámica de proyectos Java en el espacio de trabajo

En la publicación anterior, mostré cómo usar el modelo Java para crear un nuevo proyecto, acceder a un proyecto existente e importar / cargar dinámicamente un directorio de proyecto existente en el espacio de trabajo.

La verdadera pregunta es si queremos analizar una gran cantidad de proyectos (por ejemplo, 1000) y esos proyectos no tienen el archivo .project en su directorio. Entonces los proyectos de carga dinámica no funcionarían en absoluto.

En este artículo, mostraré cómo cargar dinámicamente una gran cantidad de proyectos en el espacio de trabajo. Cuando recorre el directorio que contiene una gran cantidad de proyectos de código abierto, para cada directorio haga lo siguiente:

1. Cree un código auxiliar del proyecto en el espacio de trabajo con el nombre del directorio.

IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
m_project = root.getProject(projectName);
try {
	// Create the project
	if (!m_project.exists()) {
		m_project.create(null);
	}
	m_project.open(null);
	javaProject = JavaCore.create(m_project);
 
	IProjectDescription description = m_project.getDescription();
	description.setNatureIds(new String[] { JavaCore.NATURE_ID });
 
	m_project.setDescription(description, null);
 
	// need to check to make sure this is right JRE
	IClasspathEntry[] buildPath = {
			JavaCore.newSourceEntry(m_project.getFullPath().append("src")),
			JavaRuntime.getDefaultJREContainerEntry() };
		// set the classpath
	javaProject.setRawClasspath(buildPath, m_project.getFullPath()
			.append("bin"), null);
		// create the src folder
	IFolder folder = m_project.getFolder("src");
	if (!folder.exists())
		folder.create(true, true, null);
		srcFolder = javaProject.getPackageFragmentRoot(folder);
	Assert.isTrue(srcFolder.exists());
} catch (CoreException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	return false;
}
  Representar un archivo Java como AST (árbol de sintaxis abstracta)

2. Camine recursivamente por cada subdirectorio, para cada archivo .java haga lo siguiente:

1. lee el archivo fuente de Java en el directorio del proyecto
2. obtener la información del paquete a través de una expresión regular: Pattern.compile («^ paquete s + ([^;]+); «);
3. agregue cada archivo al modelo Java de acuerdo con los nombres de los paquetes

IPackageFragment fragment = srcFolder.createPackageFragment(pkg_name_from_java_file, true, null);
fragment.createCompilationUnit(java_file_name, code_from_java_file, true, null);

3. Utilice ASTParser para analizar cada proyecto y obtener la información deseada

Parece cargar / importar proyectos existentes al espacio de trabajo, pero en realidad está creando nuevos proyectos con código fuente existente.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *