-
Notifications
You must be signed in to change notification settings - Fork 1
Project Build (Maven)
Configuración por XML, por medio del archivo POM.xml
- Construcción del proyecto
- estructuración del proyecto (Archetypes)
- Gestión de dependencias
- Compilación
Es un sitio web donde se encuentra un gran número de librerías disponibles para ser utilizadas por cualquier proyecto. Por defecto un proyecto Maven buscará en este sitio si no encuentra las dependencias en repositorios locales.
Es donde Maven deja los JARs que se descarga.
El repositorio local lo utiliza como caché evitando la descarga en las siguientes generaciones del proyecto. Se reduce el tiempo que supondría volver a descargarse todos las librerías. Todos los artefactos y librerias que se manejen en maven se guardarán en la carpeta .m2/repository ubicada en el directorio /home del usuario.
El ciclo de vida de Maven esta conformado por Goals/Metas. Las partes del ciclo de vida principal del proyecto Maven son:
compile: Genera los ficheros .class compilando los fuentes .java
test: Ejecuta los test automáticos de JUnit existentes, abortando el proceso si alguno de ellos falla.
package: Genera el fichero .jar con los .class compilados
install: Copia el fichero .jar a un directorio de nuestro ordenador donde maven deja todos los .jar. De esta forma esos .jar pueden utilizarse en otros proyectos maven en el mismo ordenador.
deploy: Copia el fichero .jar a un servidor remoto, poniéndolo disponible para cualquier proyecto maven con acceso a ese servidor remoto.
Artefactos Es un componente de software que podemos incluir en un proyecto como dependencia. Normalmente será un jar, pero podría ser de otro tipo, como un war por ejemplo.

-
src/main/java: Contiene el código fuente con nuestras clases Java incluida la estructura de paquetes -
src/main/resources: Contiene ficheros de recursos como imágenes ficheros.propertiesetc -
src/test/java: Contiene el código fuente con nuestras clases Java para realizar test -
src/test/resource: Contiene ficheros de recursos como imágenes ficheros.propertiesetc para nuestros test -
target: Contiene los desplegables que generamos con Mavenjar,waretc -
pom.xml: Es el fichero encargado de definir el concepto de Artefacto.
Basado en el principio de Convención sobre Configuración con este mínimo archivo ya se toma por hecho la configuración de estructura carpetas del proyecto sin necesidad de indicarlo.
Convención sobre Configuración, también conocido como CoC es un paradigma de programación de software que busca minimizar el número de decisiones que un desarrollador necesita hacer, ganando así en simplicidad pero no perdiendo flexibilidad por ello.
Consta de siguientes partes:
- Propiedades:
<properties>...</propierties> - Dependencias:
<dependencies>...<dependencies/> - Módulos:
<modules>...</modules> - Repositorios:
<repositories/> - Construcción:
<build/> - Plugins:
</plugins> - Profiles:
<profiles/> - Información de Desarrollo:
<developers>, <mail-list>

Los profiles es una forma de agregar un subconjunto de elementos disponibles en el POM.xml, para tener diferentes configuraciones, ambientes, parámetros, según las necesidades, manteniendo la portabilidad del proyecto. El pom resultante es construido al momento de construir el proyecto. Esto cuando se indica utilizer un profile específico.
En este proyecto son usados para establecer 2 entornos, el de desarrollo y el entorno de producción. Definido por proyecto en el POM.xml

El trigger de activación del perfil que se usa es, que el entorno de desarrollo esta activado por defecto y se reconoce el entorno de Producción (Heroku) cuando detecta la existencia de una variable de entorno env.DYNO solo existente en ese entorno
Mediante los perfiles yo puedo especificar properties diferentes para cada entorno.

Lo que me permite por ejemplo especificar bases de datos diferentes dependiendo del entorno en el que me encuentre.
https://github.com/AdamGamboa/JavaEE-Training/tree/master/01-Maven