0. Introducción
Ya existe un post anterior que cubre este tema. Pero creo conveniente crear uno mas simple y actualizado a java 10 (tal vez 11).Cuando tenemos recursos en la carpeta src/main/resources como por ejemplo el famoso fichero de definición de entidades JPA "persistence.xml" , y le damos File- Export as Java Runnable, no recoge bien la localización de los ficheros de recursos.
Parea ello optamos por la solución de Crunchify adaptándola a nuesto proyecto.
Lo que nos insteresa es el código que aparece después de definir las dependencias (<dependencies>) del código del fichero pom.xml
Hay que destacar las siguientes versiones para que compatibilicen con Java 10
-Java : versión 10 en ${java.version} definida en <properties> y dispuesta en <source> y <target> del maven-compliler-plugin
-maven-compiler-plugin: versión 3.8.0
-maven-resources-plugin: versión 3.1.0
-maven-dependency-plugin: versión 3.1.1
-maven-jar-plugin: versión 3.1.1
También hay que tener en cuenta que
- Se genera la carpeta MiCarpeta que recibe el resultado del build. Se define en mave-resources-plugin en <outputDirectory>
- Se genera un jar llamado MiJar que se define en <finalName> del maven-plugin-jar donde se le indica también la carpeta: <finalName>MiCarpeta/MiJar</finalName>
-Se genera la carpeta lib dentro de MiCarpeta. Se define en maven-dependency-plugin en <outputDirectory>
- Hay que indicar el nombre completo de la clase a ejecutar y por tanto debe de tener un "main". Se indica en maven-jar-plugin en <mainClass>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | <project> <!-- modelVersion, groupID.. --> <properties> <!-- otras propiedades --> <java.version>10</java.version> </properties> <dependencies> <dependency> <!-- ....... --> </dependency> <!-- mas dependencias --> </dependencies> <!-- COMPILER PLUGIN --> <!-- Esta si que va bien http://crunchify.com/how-to-create-build-java-project-including-all-dependencies-using-maven-maven-resources-maven-dependency-maven-jar-plugin-tutorial/ --> <build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <!-- release>10</release --> <source>${java.version}</source> <target>${java.version}</target> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <id>copy-resources</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/MiCarpeta</outputDirectory> <resources> <resource> <directory>resources</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <id>copy-dependencies</id> <phase>prepare-package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/MiCarpeta/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.1.1</version> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> <mainClass>ximodante.orve.ORVETest</mainClass> </manifest> <manifestEntries> <Class-Path>.</Class-Path> </manifestEntries> </archive> <finalName>MiCarpeta/MiJar</finalName> </configuration> </plugin> </plugins> </build> </project> |
Para obtener el jar hacemos click derecho sobre el proyecto- Run AS- 4 Maven Build y seleccionamos clean install en el apartado goals como se indica en la imagen.
No hay comentarios :
Publicar un comentario