1. EGradle (Editor)
Es un editor de ficheros de gradle
Detecta algunos errores de sintaxis. Puede ser válido
2. Yaml editor
Para editar ficheros YAML
1. EGradle (Editor)
Es un editor de ficheros de gradle
Detecta algunos errores de sintaxis. Puede ser válido
2. Yaml editor
Para editar ficheros YAML
1. Introducción
2. Crear un proyecto desde Eclipse EE
3. Cambiar la versión de java a java 16
4. build.gradle
5. Incluir una jar propio (local)
6. Generar el jar
7. Agregar la dependencia Lombok.jar
8. Resolución de problemas
Se pretende migrar desde Maven a Gradle, para ello empezamos con un ejemplo sencillo y creamos una libreria jar, a la que añadiremos como dependencia una libreria jar lcal y también a Lombok que cuesta un poco más.
Desde el menú:
File-> New -> Gradle -> Gradle Project ->NEXT
Aparece una pantalla que dice "How to experience the best Gradle integration" y le damos NEXT
Le damos el nombre del proyecto (en mi caso "XimoProject") y seleccionamos "Use default location" y NEXT
Indicamos la version 7.0 de Gradle y donde localizar el jdk y FINISH (ANTICUADO NO utilizar la version de gradle superior a la 6.6!!)
Y vemos que nos ha creado esta estructura del proyecto
Ha creado 2 clases, una src/main/java/Library.java y otra en src/text/java/LibaryTest.java
Como vemos, el JRE System library és el JavaSE-13 que debemos de cambiar por el 16.
Para ello , nos situmanos en el "Project Explorer" sobre XimoProject-lib(in lib) y con el botón derecho seleccionamos "Properties", y marcamos Java Build Path en el menú izquierdo.
Marcamos dentro de ModulePath -> JRE System Library [JavaSE-13] y le damos al botón Edit
Ahora se trata de buscar en el botón Environments el casar el tipo de java con su localización. en este caso nos interesa Java 16
Y cuadramos el tipo y el jdk (16)
Si por algún motivo no apareciera el jdk 16 habría que buscarlo en en el botón Installed JREs
Le daríamos al botón Add y localizariamos donde está instalado el jdk
Le damos a Standard VM y NEXT
Le damos al botón "Directory" y localizamos donde está nuestro jdk y luego le damos a FINISH
Este fichero está en la carpeta XimoProject-lib (lib)
y el contenido generado es:
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 | /* * This file was generated by the Gradle 'init' task. * * This generated file contains a sample Java library project to get you started. * For more details take a look at the 'Building Java & JVM projects' chapter in the Gradle * User Manual available at https://docs.gradle.org/7.0/userguide/building_java_projects.html */ plugins { // Apply the java-library plugin for API and implementation separation. id 'java-library' } repositories { // Use Maven Central for resolving dependencies. mavenCentral() } dependencies { // Use JUnit test framework. testImplementation 'junit:junit:4.13.1' // This dependency is exported to consumers, that is to say found on their compile classpath. api 'org.apache.commons:commons-math3:3.6.1' // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'com.google.guava:guava:30.0-jre' } |
Lo que hay que saber:
Línea 11: El plugin para crear jars es "java-library"
Línea 16: Utilizaremos el repositorio de maven central
En principio nos ha creado 3 tipos de depenedencias, que se definen según el equivalente en maven de groupId, artifactId y version, pero en este caso supone que seguimos ese orden y separa los valores por ":", en este caso 'junit:junit:4.13.1' és equivalente en Maven a :
1 2 3 4 5 | <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.1</version> </dependency> |
El primer tipo de dependencia afevta al test y es testImplementation
El segundo tipo es api que nos hace accesible a todos los elementos de esta librería. Se referencia a las librerias de la forma "Maven" separando los campos por ":" como hemos visto antes
El tercero y más recomendable es implementation, que sirve para que utilicemos esta librería pero que no exportemos con nuestro jar la visibilidad de los elementos de esta librería. Se utiliza el formato "maven" separando los campos por ":"
Para ello cremos una carpeta "mylibs" que cuelgue directamente de XimoProject-lib( in lib)
Metemos un jar (por ejemplo he bajado el jar de Apache "commons-lang3-3.12.0.jar") dentro de mylibs
Ahora hay que definirlo en el "build.gradle"
con lo que la sección de dependencies quedaría
1 2 3 4 5 6 7 8 9 10 11 12 13 | dependencies { // Use JUnit test framework. testImplementation 'junit:junit:4.13.1' // This dependency is exported to consumers, that is to say found on their compile classpath. api 'org.apache.commons:commons-math3:3.6.1' // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'com.google.guava:guava:30.0-jre' // This dependency is for local jars in the folder mylibs implementation files('mylibs/commons-lang3-3.12.0.jar') } |
la línea 12 indica que referenciamos desde un fichero en ruta relativa desde la carpeta "lib" o XimoProject-lib (in lib), y no usamos el estilo "Maven" con campos separados por ":"
Primeramente en el Project Explorer, con el botón derecho del mouse, seleccionar Graddle --> Refresh Gradle Project
Buscar el tab de Gradle Tasks, marcar XimoProject, ir entrando en el árbol darle dos clicks al "build" indicado en figura (el que cuelga de XipoProject-lib-build)
Y en la consola sale que tod ha salido bien:
Working Directory: /home/eduard/WORKSPACES/WS_VAADIN07/XimoProject Gradle user home: /home/eduard/.gradle Gradle Distribution: Specific Gradle version 7.0 Gradle Version: 7.0 Java Home: /home/eduard/MyPrograms/jdk-16.0.1 JVM Arguments: None Program Arguments: None Build Scans Enabled: false Offline Mode Enabled: false Gradle Tasks: build > Task :lib:compileJava > Task :lib:processResources NO-SOURCE > Task :lib:classes > Task :lib:jar > Task :lib:assemble > Task :lib:compileTestJava > Task :lib:processTestResources NO-SOURCE > Task :lib:testClasses > Task :lib:test > Task :lib:check > Task :lib:build BUILD SUCCESSFUL in 3s 4 actionable tasks: 4 executed
Siendo XimoProject la carpeta del proyecto y lib la carpeta que en el Project Explorer aparece como XimoProject-lib (en lib)
OJO: Esta librería generada lib.jar, no es visible ni accesible desde eclipse al menos desde la perspectiva Java EE!
Por tanto hay que entrar en el administrador de archivos para verla!!!
Para ello hay que seguir las indicaciones que se dan en Lombok.
Veamos el build.gradle como quedaria
plugins { // Apply the java-library plugin for API and implementation separation. id 'java-library' } repositories { // Use Maven Central for resolving dependencies. mavenCentral() } dependencies { // Use JUnit test framework. testImplementation 'junit:junit:4.13.1' // This dependency is exported to consumers, that is to say found on their compile classpath. api 'org.apache.commons:commons-math3:3.6.1' // This dependency is used internally, and not exposed to consumers on their own compile classpath. implementation 'com.google.guava:guava:30.0-jre' // This dependency is for local jars in the folder mylibs implementation files('mylibs/commons-lang3-3.12.0.jar') /*********************************************************************** *********************** LOMBOK DEFINITION ******************************/ compileOnly 'org.projectlombok:lombok:1.18.20' annotationProcessor 'org.projectlombok:lombok:1.18.20' testCompileOnly 'org.projectlombok:lombok:1.18.20' testAnnotationProcessor 'org.projectlombok:lombok:1.18.20' /************************************************************************/ }
0. Introducción
Una de las alternativas a no repetir código es utilizar los symblinks o enlaces simbólicos de ficheros.
En principio, vamos a hacer enlaces simbolóicos de carpetas, y se van a hacer de forma relativa es decir, en vez de utilizar
ln -s /home/ximodante/WORKSPACE/Project01/src/main/java/package01 /home/ximodante/WORKSPACE/Project02/src/main/java/package01
cd /home/ximodante/WORKSPACE/Project02/src/main/java ln -s ../../../../Project01/src/main/java/package01 package01
#para deshace el link, utilizar unlink package01
PROS:
En máquinas obsoletas, las nuevas versiones de eclipse van muy lentas, para agilizar un poco se puede hacer:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!-- Define a SSL HTTP/1.1 Connector on port 8443 This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation --> <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" <!-- true to read client certificate --> sslProtocol="TLS" <!--"TLSv1.2" --> keyAlias="tomcat" <!-- Alias cuando se crea mykeystore,jks --> keystoreFile="/home/ximo/mykeystore.jks" keystorePass="mypassword" /> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <Connector port="19443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" sslProtocol="TLS" clientAuth="true" keyAlias="tomcat" SSLCertificateFile="/etc/letsencrypt/live/midominio.es/cert.pem" SSLCertificateChainFile="/etc/letsencrypt/live/midominio.es/chain.pem" SSLCertificateKeyFile="/etc/letsencrypt/live/midominio.es/privkey.pem" /> |
keytool -certreq -alias tomcat1 -file mytomcat.csr -keystore mykeystore.jks
nslookup 192.168.2.2
ws.ximodante.es
otro.ximodante.es
authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = 192.168.2.2 DNS.2 = localhost --> SOLO PARA PUEBAS en PRE
DNS.3 = otro.ximodante.esDNS.4 = ws.ximodante.es
openssl x509 -req -in mytomcat.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mytomcat.crt -days 825 -sha256 -extfile mytomcat.conf
keytool -import -alias tomcat1 -file mytomcat.crt -keystore mykeysore.jks
clientAuth="true"
Con lo que nos pide el certificado de cliente y podemos autenticarnos en el servidor mediante certificado.
5. Autentificación en el servidor con tarjeta criptográfica (en cliente).
Cuando se intenta acceder con tarjeta criptográfica en el cliente, nos da este error en el cliente:SSL_ERROR_BAD_CERT_ALERT
Supongo que tal vez haya que indicar un truststore que contenga el certificado raíz.Parece ser que tomcat utiliza el alacen de certificados de java.
Se va a copiar el fichero keystore java_path/lib/security/cacerts a una carpeta de pruebas y con el programa keystore explorer, añadimos los certificados raiz de la etidad certificadora de la tarjeta obtenidas de la ACCV
En concreto añadimos el certificado raiz, los 110 y 120
y vamos a modificar el server.xml para que tenga un truststore
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- Define a SSL HTTP/1.1 Connector on port 8443
This connector uses the JSSE configuration, when using APR, the
connector should be using the OpenSSL style configuration
described in the APR documentation -->
<Connector port="8443"
protocol="HTTP/1.1"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
clientAuth="false" <!-- true to read client certificate -->
sslProtocol="TLS" <!--"TLSv1.2" -->
keyAlias="tomcat" <!-- Alias cuando se crea mykeystore,jks -->
keystoreFile="/home/ximo/mykeystore.jks"
keystorePass="mypassword"
/>
6. Configurar el tomcat de Eclipse.
"If you've already created the server, you can edit the server.xml template it copies. If you use the project explorer, It is under Other Projects->Servers->Tomcat Server Name->server.xml"
Así de fácil localizamos el server.xml y lo configuramos como si fuera un tomcat normal.