maven-compiler-plugin
Proyecto Jigsaw vs Maven (2)
Del Proyecto Jigsaw :
Facilite a los desarrolladores la construcción y el mantenimiento de bibliotecas y aplicaciones de gran tamaño, tanto para las plataformas Java SE como EE.
Estoy tratando de aprender qué proyecto es Jigsaw y hasta ahora parece que el objetivo de Project Jigsaw se superpone con lo que hicimos usando la administración de dependencias de Maven (o Gradle):
- ¿Es una amenaza construir herramientas como Maven?
- ¿O mi entendimiento es incorrecto y el proyecto Jigsaw va a complementar estas herramientas de construcción de alguna manera?
Respuesta muy simplificada
Después de Jigsaw , el public
será público solo dentro del alcance de JAR. Para ver la clase fuera del JAR debe exportarse.
Java forzará la modularización porque cualquier interacción entre módulos deberá especificarse en el archivo de module-info
del module-info
.
Por ejemplo, si produce un WAR, permanecerá casi sin cambios, pero todos los paquetes JAR en el WAR deben definir una información de módulo (o no definirla y tratarse como módulos automáticos o sin nombre).
Maven tiene 2 características principales: administración de dependencias y construcción:
- La gestión de la dependencia significa que Maven puede determinar las versiones de las bibliotecas y descargarlas desde los repositorios.
- Construir significa que Maven puede compilar código y empaquetarlo en artefactos.
Para concluir: Maven seguirá siendo responsable de la construcción, pero uno debe aprender a compilar y empaquetar utilizando módulos de Jigsaw.
Los módulos no son en modo alguno una amenaza para construir herramientas. Los módulos complementan las herramientas de compilación porque las herramientas de compilación construyen un gráfico de dependencia de los artefactos y sus versiones en el momento de la compilación, mientras que los módulos imponen las dependencias de los artefactos / módulos (sin incluir las versiones) en el tiempo de compilación y ejecución.
Del estado del sistema de módulos :
"A module’s declaration does not include a version string, nor
constraints upon the version strings of the modules upon which it
depends. This is intentional: It is not a goal of the module system
to solve the version-selection problem, which is best left to build
tools and container applications."