1+ plugins {
2+ id " de.undercouch.download" version " 4.1.2"
3+ }
4+
5+ maturity = ' MATURE'
6+ maintenance = ' FULL'
7+ description = ' xtralink integration, jobs and store.'
8+ // docIgnore = true
9+
10+ ext {
11+ xtralinkVersion = ' 0.9.3'
12+ buildVersion = ' 0'
13+ xtralinkBuildDir = new File (buildDir, ' xtralink' )
14+ xtralinkLibDir = new File (xtralinkBuildDir, ' dist' )
15+ xtralinkLibName = project. osdetector. os == ' osx' ? ' libxtralink.dylib' : ' libxtralink.so'
16+ generatedResourcesDir = new File (buildDir, ' generated/src/main/resources/' )
17+ embeddedLibDir = new File (generatedResourcesDir, " xtralink-${ xtralinkVersion} -${ buildVersion} /lib" )
18+ }
19+
20+ dependencies {
21+ provided project(' :xtraplatform-nativ-loader' )
22+
23+ embedded name : " xtralink-${ xtralinkVersion} "
24+ }
25+
26+ project. sourceSets. main. output. dir(generatedResourcesDir)
27+
28+ def downloadXtralink = tasks. register(' downloadXtralink' , Download , {
29+ src " https://github.com/ldproxy/xtralink/archive/refs/tags/v${ xtralinkVersion} .tar.gz"
30+ dest new File (new File (System . getProperty(" java.io.tmpdir" )), " xtralink-${ xtralinkVersion} .tar.gz" )
31+ overwrite false
32+ })
33+
34+ def getXtralink = tasks. register(' getXtralink' , Copy , {
35+ dependsOn downloadXtralink
36+ from(tarTree(downloadXtralink. get(). dest)) {
37+ eachFile { fcd ->
38+ fcd. relativePath = new RelativePath (true , fcd. relativePath. segments. drop(1 ))
39+ }
40+ includeEmptyDirs = false
41+ }
42+ // from(new File(projectDir, '../../../ws-xtrahub/xtralink'))
43+ // exclude 'data/**'
44+
45+ into xtralinkBuildDir
46+ def copyDetails = []
47+ eachFile { copyDetails << it }
48+ doLast {
49+ copyDetails. each { FileCopyDetails details ->
50+ def target = new File (destinationDir, details. path)
51+ if (target. exists()) { target. setLastModified(details. lastModified) }
52+ }
53+ }
54+ })
55+
56+ tasks. register(' buildXtralink' , Exec , {
57+ dependsOn(tasks. getXtralink)
58+ inputs. dir xtralinkBuildDir
59+ workingDir new File (xtralinkBuildDir, ' ffi/clib/main' )
60+ commandLine ' make' , ' shared' , ' OUT=../../../dist/'
61+ })
62+
63+ def buildXtralinkJava= tasks. register(' buildXtralinkJava' , Exec , {
64+ dependsOn(tasks. getXtralink)
65+ inputs. dir xtralinkBuildDir
66+ workingDir new File (xtralinkBuildDir, ' ffi/java' )
67+ commandLine ' ./gradlew' , ' build'
68+ })
69+
70+ def copyXtralinkLib = tasks. register(' copyXtralinkLib' , Copy , {
71+ dependsOn tasks. buildXtralink
72+ from(xtralinkLibDir) {
73+ include xtralinkLibName
74+ }
75+ into embeddedLibDir
76+ })
77+
78+ tasks. named(' jar' ) {
79+ dependsOn copyXtralinkLib
80+ }
81+ tasks. named(' cyclonedxDirectBom' ) {
82+ dependsOn buildXtralinkJava
83+ }
84+ tasks. withType(Pmd ). configureEach {
85+ dependsOn copyXtralinkLib
86+ }
87+
88+ project. subprojects { Project subproject ->
89+ if (subproject. name. endsWith(" -tpl" )) {
90+ subproject. afterEvaluate {
91+ subproject. tasks. named(" compileJava" ) {
92+ dependsOn buildXtralinkJava
93+ }
94+ subproject. tasks. named(" cyclonedxDirectBom" ) {
95+ dependsOn buildXtralinkJava
96+ }
97+ subproject. tasks. named(" javadocJar" ) {
98+ dependsOn buildXtralinkJava
99+ }
100+ subproject. tasks. named(" sourcesJar" ) {
101+ dependsOn buildXtralinkJava
102+ }
103+ }
104+ }
105+ }
0 commit comments