-
Notifications
You must be signed in to change notification settings - Fork 3
/
build.gradle
187 lines (155 loc) · 7.54 KB
/
build.gradle
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
/*
File : build.gradle
Purpose : Build file for opal-tools
*/
plugins {
id "java"
id "eclipse"
id "distribution"
}
// for Ant filter to replace variables in files
import org.apache.tools.ant.filters.ReplaceTokens
import org.gradle.internal.os.OperatingSystem
//-----------------------------------------------------------------------------
//-- Configuration
//-----------------------------------------------------------------------------
project.description = "OPAL Tools - more details here: https://github.com/daust/opal-tools"
project.version = '2.9.0'
sourceCompatibility = 11
targetCompatibility = 11
archivesBaseName = "opal-tools"
// version of sqlcl to be used
// download files from : https://www.oracle.com/tools/downloads/sqlcl-downloads.html
// and register here
def sqlclVersion ='23.3.0'
// sqlclZipFile: file location to downloaded zip file,
// e.g. /Users/daust/Downloads/sqlcl-20.2.0.174.1557.zip
// this is only required when using task "opalRegisterSQLclLibraries"
def sqlclZipFile ='/Users/daust/Downloads/sqlcl-23.3.0.270.1251.zip'
//-----------------------------------------------------------------------------
//-- Repositories and dependencies
//-----------------------------------------------------------------------------
/* define repositories to look for maven modules */
repositories {
maven {url "https://plugins.gradle.org/m2/"}
mavenCentral()
flatDir {dirs "lib/sqlcl-$sqlclVersion"}
flatDir {dirs "lib/sqlcl-$sqlclVersion/ext"}
}
/* define specific maven dependencies */
dependencies {
// *** Only for compilation, NOT distributed
//compileOnly 'javax.servlet:javax.servlet-api:3.1.0'
// https://mvnrepository.com/artifact/log4j/log4j
//compile group: 'log4j', name: 'log4j', version: '1.2.+'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.+'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.+'
// https://mvnrepository.com/artifact/commons-logging/commons-logging
//implementation group: 'commons-logging', name: 'commons-logging', version: '1.2'
// https://mvnrepository.com/artifact/org.apache.commons/commons-text
compile group: 'org.apache.commons', name: 'commons-text', version: '1.9'
// https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.11'
// https://mvnrepository.com/artifact/com.google.code.gson/gson
compile group: 'com.google.code.gson', name: 'gson', version: '2.+'
// https://mvnrepository.com/artifact/commons-io/commons-io
compile group: 'commons-io', name: 'commons-io', version: '2.+'
// https://mvnrepository.com/artifact/commons-codec/commons-codec
compile group: 'commons-codec', name: 'commons-codec', version: '1.+'
// https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple
compile group: 'com.googlecode.json-simple', name: 'json-simple', version: '+'
// parser for command line options: args4j
// https://mvnrepository.com/artifact/args4j/args4j
compile group: 'args4j', name: 'args4j', version: '+'
// https://mvnrepository.com/artifact/com.oracle.database.jdbc/ucp11
// find the matching one for the ojdbc libraries in sqlcl
// look in file sqlcl/bin/dependencies.txt:
// ucp11.jar=21.0.0.0_220912
// => took 21.5 because 21.0 didn't exist in Mavencentral
compile group: 'com.oracle.database.jdbc', name: 'ucp11', version: '21.10.+'
// dependencies from sqlcl
compile fileTree(dir: "lib/sqlcl-$sqlclVersion", include: ['*.jar'])
compile fileTree(dir: "lib/sqlcl-$sqlclVersion/ext", include: ['*.jar'])
compile fileTree(dir: "lib/additional", include: ['*.jar'])
}
//-----------------------------------------------------------------------------
//-- Groovy helper functions
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-- task definitions
//-----------------------------------------------------------------------------
jar {
manifest {
attributes(
//'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
'Main-Class': 'de.opal.Main'
)
}
}
distZip.setArchiveName("${archivesBaseName}-${project.version}-sqlcl-${sqlclVersion}.zip")
distTar.setArchiveName("${archivesBaseName}-${project.version}-sqlcl-${sqlclVersion}.tar")
distributions {
main {
distributionBaseName = 'opal-tools'
println 'getName:' + Distribution.getName()
contents {
from('src/shell-scripts'){//exclude '*ConfigDir.*'
//exclude 'deploy*'
into 'bin'}
from('src/conf'){into 'conf'}
from('src/configure-templates'){into 'configure-templates'}
from('src/configure-templates'){include "setup*"}
from('src/doc'){into 'doc' filter(ReplaceTokens, tokens: ['project.version': project.version, 'sqlcl.version': sqlclVersion])}
from('src/doc/Documentation.html'){ filter(ReplaceTokens, tokens: ['project.version': project.version, 'sqlcl.version': sqlclVersion])}
from (jar.outputs){into 'lib'}
from (configurations.compile){into 'lib'}
}
}
}
task postCompileJava {
doLast{
println 'do it before jar'
new File("${project.buildDir}/classes/java/main/de/opal/installer/version.properties").text="version="+project.version
new File("${project.buildDir}/classes/java/main/de/opal/installer/zip/version.properties").text="version="+project.version
new File("${project.buildDir}/classes/java/main/de/opal/exporter/version.properties").text="version="+project.version
}
}
jar.dependsOn postCompileJava
println "\n***********************************************"
println "Version: " + project.version
println "Source-Compatibility: " + project.sourceCompatibility
println "Project description: " + project.property("description")
println "sqlcl version: " + sqlclVersion
println "sqlcl zip file: " + sqlclZipFile
println "sqlcl libs from: " + "lib/sqlcl-$sqlclVersion"
println "***********************************************\n\n"
//-----------------------------------------------------------------------------
//-- task definitions for developers
//-- setting up the developer environment and downloading new JRI libraries
//-- for a new sqlcl release
//-----------------------------------------------------------------------------
task opalRegisterSQLclLibraries{
description = "This will register the sqlcl libraries for version $sqlclVersion into the lib directory. Needs to be done only once when you upgrade to a new sqlcl version."
// ${File.separator}
doLast{
def tempLocation ="$project.projectDir/build/download/$sqlclVersion"
def targetLocation ="$project.projectDir/lib/sqlcl-$sqlclVersion"
println " register files from ${sqlclZipFile} install in target location: " + targetLocation
file(targetLocation).mkdirs()
file(tempLocation).mkdirs()
// ungzip / untar files
copy {
from zipTree("${sqlclZipFile}")
into "$tempLocation"
}
// copy all libraries to target location to: lib/sqlcl/<version>
copy {
from "$tempLocation/sqlcl/lib"
into "$targetLocation"
include "**"
// exclude all that are used for compilation and test only
// but not required at runtime
//exclude "net.tascalate.asmx*jar"
}
}
}