Intellij Idea - Buceo profundo

Los primeros cuatro capítulos de este tutorial fueron diseñados para brindar a los principiantes una descripción general de nivel básico de IntelliJ. Esta sección profundiza en IntelliJ y analiza más sobre proyectos, su formato y otras cosas.

Comprensión de proyectos

Un proyecto es una aplicación o software en el que está trabajando. Puede contener varios módulos, clases, bibliotecas, configuración, etc. Es el elemento más alto de la jerarquía.

Comprensión de los módulos

Los módulos tienen un renglón debajo de 'Proyecto'. Un módulo es una entidad separada que se puede compilar, depurar y ejecutar independientemente de otros módulos. Un solo proyecto puede contener varios módulos. Puede agregar o eliminar módulos de un proyecto en cualquier momento.

Además de esto, también podemos importar los módulos existentes. Siga estos pasos para importar los módulos existentes:

  • Vaya a Archivo → Estructura del proyecto.
  • Seleccione los módulos y haga clic en el icono más.
  • Mostrará la opción de importar módulo.

Entender las carpetas

Content rootes una carpeta que contiene todos los archivos que componen su módulo. Un módulo puede tener más de una carpeta de contenido. Las carpetas se clasifican en los siguientes tipos:

  • Sources - Al asignar esta categoría a la carpeta, le indicamos a IntelliJ que esta y su subcarpeta contienen el código fuente de Java y debe compilarse como parte del proceso de compilación.

  • Tests- Al asignar esta categoría a la carpeta, le indicamos a IntelliJ que es la ubicación para las pruebas unitarias. Esta carpeta puede acceder a las clases desde la carpeta Fuentes.

  • Resources- Representa varios archivos de recursos utilizados en el proyecto, por ejemplo, imágenes, XML y archivos de propiedades. Durante el proceso de compilación, el contenido de esta carpeta se copia tal cual en la carpeta de salida.

  • Excluded- IntelliJ no indexará el contenido de la carpeta excluida. Esto significa que IntelliJ no proporcionará la sugerencia de finalización del código ni otras sugerencias. Por ejemplo, el directorio de salida y el directorio de destino se excluyen de forma predeterminada.

  • Test resources - Esto es similar a los recursos y se usa para pruebas unitarias.

Entendiendo las Bibliotecas

La biblioteca es una compilación de diferentes clases. La biblioteca permite la reutilización del código. En Java, la biblioteca se puede incluir en ZIP, Jar o simplemente en una carpeta. Podemos definir bibliotecas en tres niveles diferentes. Los niveles son: nivel global, de proyecto y de módulo.

  • Global level - Compartido por todos los proyectos.

  • Project level - Compartido por todos los módulos del proyecto.

  • Module level - Compartido por las clases de esos módulos.

Comprender las facetas

Las facetas son las extensiones de los módulos. Añaden soporte a los marcos y tecnologías. Cuando se agrega una faceta a un módulo, IntelliJ identifica que agrega soporte. Por ejemplo, sugerencias y ayuda en el editor, nuevas herramientas en la barra de la ventana, descarga de dependencias, etc. Puede agregar facetas desdeFile → Project Structure ventana como se muestra a continuación -

Artefactos

Los artefactos son el resultado de un proyecto. Puede ser un archivo JAR simple, una aplicación Java EE o una aplicación Java EJB. Si usamos herramientas de compilación externas como Gradle o Maven, IntelliJ agregará artefactos para ellas automáticamente. Los artefactos se pueden crear navegando alFile → Project Structure como se muestra a continuación -

Importar proyecto existente

En esta sección, entenderemos cómo importar un proyecto existente. Podemos importar un proyecto de dos formas:

  • Importarlo de una fuente existente
  • Importarlo desde el modelo de construcción.

En la actualidad, es compatible con las herramientas de compilación Gradle y Maven. Para importar proyecto -

  • Navegando a Archivo → Nuevo → Proyecto desde la fuente existente.
  • Seleccione el directorio del proyecto existente, pom.xml de Maven o el script de compilación de Gradle.
  • Haga clic en el botón Aceptar.

Formatos de proyecto

IntelliJ admite dos tipos de formato de proyecto, uno es directory-based y otro es file-based. El formato basado en directorios es más nuevo, se recomienda. De forma predeterminada, IntelliJ crea un formato de proyecto basado en directorios. Puede seleccionar el formato del proyecto mientras crea un nuevo proyecto. En la nueva ventana del proyecto, simplemente haga clic en más configuraciones como se muestra en la imagen de abajo -

Formato de proyecto basado en directorios

Este formato ayuda a crear una carpeta de ideas en su proyecto y a mantener todos los archivos de configuración dentro de esa carpeta. Las configuraciones están agrupadas en archivos xml. Por ejemplo, crearámisc.xml, modules.xml, workspace.xmly así. La siguiente captura de pantalla lo ayudará a comprender cómo funciona esto:

Formato de proyecto basado en archivos

Creará dos archivos de proyecto con ..ipr y wprextensiones. El archivo ipr contendrá configuraciones específicas del proyecto y el archivo wpr contendrá configuraciones específicas del espacio de trabajo.

Para convertir un proyecto basado en archivos en un proyecto basado en directorios, vaya a la File → Save as a Directory-Based format.

Formato de proyecto basado en directorio vs formato de proyecto basado en archivo

En comparación con el formato de proyecto basado en archivos, el formato de proyecto basado en directorio almacena la configuración en una carpeta separada con nombres significativos. Otras diferencias son:

  • La configuración relacionada que se almacena en un solo archivo facilita la administración en formato de proyecto basado en directorios.

  • Si la carpeta contiene la subcarpeta de ideas, IntelliJ reconoce ese proyecto. Debido a esto, no tiene que seleccionar el proyecto ipr explícitamente.

  • El formato de proyecto basado en directorios divide la configuración en varios archivos, por lo que es más fácil seleccionar un tipo particular de configuración para almacenar en el sistema de control de versiones.