plugin - java project classpath
¿Qué hay en un archivo.classpath/.project de Eclipse? (4)
Recientemente tuvimos un problema con un proyecto de Eclipse para uno de los miembros de nuestro equipo. Tomcat no estaba implementando JAR de la aplicación.
Eventualmente notamos que el archivo .classpath
Eclipse no era el mismo que para los miembros del equipo donde el proyecto estaba bien. Reemplazamos el archivo .classpath
con uno de un proyecto que estaba bien y se completó el despliegue de Tomcat.
Solo por curiosidad y para saber qué buscar en el futuro si algo está mal, qué hay dentro de los archivos .classpath
y .project
. ¿Qué puedo agregar allí, qué significa todo esto?
Eclipse es un entorno de tiempo de ejecución para complementos. Prácticamente todo lo que ve en Eclipse es el resultado de los complementos instalados en Eclipse, en lugar de Eclipse.
El archivo .project
es mantenido por la plataforma central de Eclipse, y su objetivo es describir el proyecto desde una vista de Eclipse genérica e independiente del complemento. ¿Cuál es el nombre del proyecto? ¿A qué otros proyectos en el espacio de trabajo se refiere? ¿Cuáles son los constructores que se utilizan para construir el proyecto? (recuerde, el concepto de "compilación" no pertenece específicamente a los proyectos de Java, sino también a otros tipos de proyectos)
El archivo .classpath
se mantiene mediante la función JDT de Eclipse ( función = conjunto de complementos). JDT contiene varios de estos archivos "meta" en el proyecto (consulte el directorio .settings
dentro del proyecto); el archivo .classpath
es solo uno de ellos. Específicamente, el archivo .classpath
contiene información que necesita la característica JDT para compilar correctamente el proyecto: las carpetas de origen del proyecto (es decir, qué compilar); las carpetas de salida (donde compilar); y entradas classpath (como otros proyectos en el espacio de trabajo, archivos JAR arbitrarios en el sistema de archivos, etc.).
Copiar ciegamente dichos archivos de una máquina a otra puede ser riesgoso. Por ejemplo, si los archivos JAR arbitrarios se colocan en la ruta de clase (es decir, archivos JAR que se encuentran fuera del área de trabajo y se denominan nombres de ruta absolutos), el archivo .classpath
se vuelve no portátil y debe modificarse en orden ser portátil. Existen ciertas mejores prácticas que se pueden seguir para garantizar la portabilidad de archivos .classpath
.
La documentación de este eclipse contiene detalles sobre las .project
en el archivo .project
: El archivo de descripción del proyecto
Describe el archivo .project
como:
Cuando se crea un proyecto en el espacio de trabajo, se genera automáticamente un archivo de descripción del proyecto que describe el proyecto. El propósito de este archivo es hacer que el proyecto se autodescriba, de modo que un proyecto que esté comprimido o liberado en un servidor pueda recrearse correctamente en otro espacio de trabajo. Este archivo siempre se llama ".project"
La referencia completa no está disponible para los archivos mencionados, ya que son extensibles por varios complementos.
Básicamente, los archivos .project almacenan las configuraciones del proyecto, como el constructor y la configuración de la naturaleza del proyecto, mientras que los archivos .classpath definen la classpath que se usará durante la ejecución. Los archivos classpath contienen src y entradas de destino que se corresponden con las carpetas del proyecto; las entradas con se usan para describir algún tipo de entradas "virtuales", como las librerías JVM o en el caso de las dependencias de los plug-ins de eclipse (las dependencias normales del proyecto Java se muestran de forma diferente, usando una entrada src especial).
.project
Cuando se crea un proyecto en el espacio de trabajo, se genera automáticamente un archivo de descripción del proyecto que describe el proyecto. El único propósito de este archivo es hacer que el proyecto se autodescriba, de modo que un proyecto que esté comprimido o liberado en un servidor pueda recrearse correctamente en otro espacio de trabajo.
.classpath
Classpath especifica qué archivos fuente y archivos de recursos de Java en un proyecto son considerados por el generador de Java y especifica cómo encontrar tipos fuera del proyecto. El constructor de Java compila los archivos fuente de Java en la carpeta de salida y también copia los recursos en él.