jueves, 27 de mayo de 2021

Gradle-7 (5) Crear una libreria jar no ejecutable. Definir la carpeta donde se creará y el nombre de fichero jar. V2

 Vamos a mejorar lo que vimos en un post anterior.


1. NOTA debemos utilizar la versión de gradle 6.6 pues las posteriores tienen un bug en eclipse que crean una carpeta lib adicional


2. Para ello, lo que vamos a hacer es que todos los jars se generen el la carpeta "mytargets" que cuelga directamente del WORKSPACE (al mismo nivel que los proyectos)

En el build.gradle, entre "repositories" y "dependencies" le daremos esta línea

project.jar.destinationDirectory = file("$rootDir/../mytargets")  

para hacernos una idea:


Pero debemos de tener precaución de no llamar a los jars generados (en cada propyecto) con el mismo nombre pues se pueden machacar unos con otros.

3. Ahora para las nuestras dependencias debemos apuntar a esa ruta

implementation files(

    '../mytargets/a-annotations-1.0.jar',

    '../mytargets/a-basic-utils-1.0.jar')

Lo demás queda igual

Veamos un ejemplo del gradle.build


 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
/*
 * 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.2/userguide/building_java_projects.html
 */

plugins {
    // Apply the java-library plugin for API and implementation separation.
    id 'java-library'
    //id 'war'   //Sinó no funciona providedCompile    
}

repositories {
    // Use JCenter for resolving dependencies.
    jcenter()
    mavenCentral()
}

// My customization 
//project.jar.destinationDirectory = file("$rootDir/mytarget")
project.jar.destinationDirectory = file("$rootDir/../mytargets")  
project.archivesBaseName = 'c-dao' 
project.version = '1.0'

dependencies {
    // Use JUnit test framework.
    testImplementation 'junit:junit:4.13'

	/***********************************************************************
    *********************** 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'
    /************************************************************************/
    
    // This dependency is for local jars in the folder mylibs
    /*
    implementation files('mylibs/a-annotations-1.0.jar',
                         'mylibs/a-basic-utils-1.0.jar', 
                         'mylibs/b-base-control-model-1.0.jar')
    */
    implementation files('../mytargets/a-annotations-1.0.jar',
                         '../mytargets/a-basic-utils-1.0.jar', 
                         '../mytargets/b-base-control-model-1.0.jar')
                         
    //implementation files('mylibs/*.jar') //NO VA !!!
    
    /* Apache.commons  */
    implementation "org.apache.commons:commons-exec:1.3"
    
    /* Apache general */
    implementation "commons-io:commons-io:2.8.0"
    
    implementation "org.apache.commons:commons-lang3:3.12.0"
    
    /* Jakarta --> Need plugin "war" */
    //providedCompile "jakarta.annotation:jakarta.annotation-api:2.0.0"
    compileOnly "jakarta.annotation:jakarta.annotation-api:2.0.0"
   
    /* HIbernate */
    implementation "org.hibernate:hibernate-core:5.4.31.Final"
    implementation "org.hibernate:hibernate-envers:5.4.31.Final"
    //implementation "org.hibernate:hibernate-testing:5.4.31.Final"
    implementation "org.hibernate:hibernate-validator:7.0.1.Final" 
    
    /* Jackson */
	implementation "com.fasterxml.jackson.core:jackson-core:2.12.3"
    //implementation "com.fasterxml.jackson.core:jackson-annotations:2.12.3"
    //implementation "com.fasterxml.jackson.core:jackson-databind:2.12.3"
    implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.3"
    //implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.12.3"
   
}







No hay comentarios :

Publicar un comentario