馃洜 Plantilla Maven Java 21 con Jetty, JasperReports, Gson y m谩s
Si est谩s desarrollando una aplicaci贸n Java moderna basada en servlets y necesitas una configuraci贸n completa con soporte para PDF, reportes, HTML din谩mico y m谩s, esta plantilla Maven te puede ahorrar mucho tiempo. La he usado para varios proyectos y est谩 pensada para correr en Jetty o Tomcat sin depender de Spring Boot.
Incluye integraci贸n con:
- Java 21
- Servidor Jetty 11 (compatible con Jakarta EE 10)
- JasperReports
- Gson para JSON
- Thymeleaf para vistas HTML
- MySQL Connector
- iTextPDF para generar PDFs
- Log4j 2 para logging
- Soporte para carga de archivos
- Y m谩s...
馃摝 Estructura del pom.xml
Aqu铆 te dejo el pom.xml
completo listo para usar. Solo necesitas cambiar el mainClass
en el plugin exec-maven-plugin
y en el maven-assembly-plugin
si tu clase principal tiene otro nombre.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/POM/4.0.0/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.egga</groupId> <artifactId>appventas</artifactId> <version>0.1</version> <packaging>jar</packaging> <properties> <maven.compiler.source>21</maven.compiler.source> <maven.compiler.target>21</maven.compiler.target> </properties> <dependencies> <!-- Jetty y Jakarta Servlet API --> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> <version>11.0.23</version> </dependency> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> <version>11.0.23</version> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-servlet-api</artifactId> <version>9.0.44</version> </dependency> <!-- Motor de plantillas Thymeleaf --> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.1.3.RELEASE</version> </dependency> <!-- Gson para JSON --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.11.0</version> </dependency> <!-- JasperReports --> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.21.0</version> </dependency> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports-functions</artifactId> <version>6.20.0</version> </dependency> <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports-fonts</artifactId> <version>6.20.0</version> </dependency> <!-- PDF con iText --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13.4</version> </dependency> <!-- Cifrado y seguridad --> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.70</version> </dependency> <!-- Conector MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <!-- Carga de archivos --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.5</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency> <!-- Logging --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.23.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.23.1</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.13.0</version> <configuration> <source>21</source> <target>21</target> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.0.0</version> <configuration> <mainClass>com.egga.appventas.Appventas</mainClass> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.7.1</version> <configuration> <archive> <manifest> <mainClass>com.egga.appventas.Appventas</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
▶️ C贸mo ejecutar
Una vez que tengas tu clase principal configurada (Appventas
en este caso), puedes correr el proyecto con:
mvn clean compile exec:java
O generar el .jar
ejecutable:
mvn clean package
Y luego correrlo:
java -jar target/appventas-0.1-jar-with-dependencies.jar
馃搧 ¿Para qui茅n es 煤til esta plantilla?
- Para desarrolladores que quieren una base s贸lida sin usar Spring Boot
- Para aplicaciones portables que corren en cualquier contenedor Servlet compatible
- Para quienes trabajan con JasperReports e iTextPDF
- Para quienes buscan una forma r谩pida de integrar Jetty en sus proyectos
馃挰 Comentarios
¿Te gustar铆a que prepare una versi贸n con Spring Boot? ¿O una con Tomcat embebido? D茅jame tu opini贸n en los comentarios o escr铆beme por correo.
¡Espero que esta plantilla te sea 煤til! 馃殌
Comentarios
Publicar un comentario