@@ -69,10 +69,10 @@ final genomicsdbVersion = System.getProperty('genomicsdb.version','1.5.4')
69
69
final bigQueryVersion = System . getProperty(' bigQuery.version' , ' 2.35.0' )
70
70
final bigQueryStorageVersion = System . getProperty(' bigQueryStorage.version' , ' 2.47.0' )
71
71
final guavaVersion = System . getProperty(' guava.version' , ' 32.1.3-jre' )
72
- final log4j2Version = System . getProperty(' log4j2Version' , ' 2.17 .1' )
73
- final testNGVersion = ' 7.7.0'
74
-
75
- final googleCloudNioDependency = ' com.google.cloud:google-cloud-nio:0.127.8 '
72
+ final log4j2Version = System . getProperty(' log4j2Version' , ' 2.24 .1' )
73
+ final testNGVersion = System . getProperty( ' testNGVersion ' , ' 7.7.0' )
74
+ final googleCloudNioVersion = System . getProperty( ' googleCloudNioVersion ' , ' 0.127.8 ' )
75
+ final gklVersion = System . getProperty( ' gklVersion ' , ' 0.8.11 ' )
76
76
77
77
final baseJarName = ' gatk'
78
78
final secondaryBaseJarName = ' hellbender'
@@ -166,27 +166,12 @@ if (versionOverridden) {
166
166
}
167
167
168
168
configurations. configureEach {
169
- resolutionStrategy {
170
- // the snapshot folder contains a dev version of guava, we don't want to use that.
171
- force ' com.google.guava:guava:' + guavaVersion
172
- // force the htsjdk version so we don't get a different one transitively
173
- force ' com.github.samtools:htsjdk:' + htsjdkVersion
174
- force ' com.google.protobuf:protobuf-java:3.25.5'
175
- // force testng dependency so we don't pick up a different version via GenomicsDB
176
- force ' org.testng:testng:' + testNGVersion
177
- force ' org.broadinstitute:barclay:' + barclayVersion
178
- force ' com.twitter:chill_2.12:0.10.0'
179
- force ' org.apache.commons:commons-math3:3.5'
180
-
181
- // make sure we don't pick up an incorrect version of the GATK variant of the google-nio library
182
- // via Picard, etc.
183
- force googleCloudNioDependency
184
-
185
- force ' com.esotericsoftware:kryo:4.0.0'
186
- }
187
169
configurations* . exclude group : ' org.slf4j' , module : ' slf4j-jdk14' // exclude this to prevent slf4j complaining about to many slf4j bindings
188
170
configurations* . exclude group : ' com.google.guava' , module : ' guava-jdk5'
189
171
configurations* . exclude group : ' junit' , module : ' junit'
172
+
173
+ // this is excluded and replaced below with a dependency on bcprof-jdk18on which fixes known vulnerabilities
174
+ // configurations*.exclude group: 'org.bouncycastle', module: 'bcprov-jdk15on'
190
175
}
191
176
192
177
tasks. withType(JavaCompile ). configureEach {
@@ -221,37 +206,47 @@ configurations {
221
206
// exclude Hadoop and Spark dependencies, since they are provided when running with Spark
222
207
// (ref: http://unethicalblogger.com/2015/07/15/gradle-goodness-excluding-depends-from-shadow.html)
223
208
exclude group : ' org.apache.hadoop'
224
- exclude module : ' spark-core_2.12 '
209
+ exclude module : ' spark-core_2.13 '
225
210
exclude group : ' org.slf4j'
226
211
exclude module : ' jul-to-slf4j'
227
212
exclude module : ' javax.servlet'
228
213
exclude module : ' servlet-api'
229
214
exclude group : ' com.esotericsoftware.kryo'
230
- exclude module : ' spark-mllib_2.12 .15'
215
+ exclude module : ' spark-mllib_2.13 .15'
231
216
exclude group : ' org.scala-lang'
232
217
exclude module : ' kryo'
233
218
}
234
219
}
235
220
236
221
dependencies {
237
222
238
- implementation (' org.freemarker:freemarker:2.3.30' )
239
- implementation ' org.broadinstitute:barclay:' + barclayVersion
223
+ implementation ' org.freemarker:freemarker:2.3.30'
224
+ implementation (' org.broadinstitute:barclay' ){
225
+ version {
226
+ strictly barclayVersion
227
+ }
228
+ }
240
229
// Library for configuration:
241
230
implementation ' org.aeonbits.owner:owner:1.0.9'
242
231
243
232
implementation ' com.github.broadinstitute:picard:' + picardVersion
244
233
externalSourceConfiguration ' com.github.broadinstitute:picard:' + picardVersion + ' :sources'
245
- implementation (' org.genomicsdb:genomicsdb:' + genomicsdbVersion) {
246
- exclude module : ' log4j-api'
247
- exclude module : ' log4j-core'
248
- exclude module : ' htsjdk'
249
- exclude module : ' protobuf-java'
250
- }
234
+
235
+ implementation ' org.genomicsdb:genomicsdb:' + genomicsdbVersion
251
236
implementation ' com.opencsv:opencsv:3.4'
252
237
implementation ' com.google.guava:guava:' + guavaVersion
253
- implementation ' com.github.samtools:htsjdk:' + htsjdkVersion
254
- implementation(googleCloudNioDependency)
238
+
239
+ implementation (' com.github.samtools:htsjdk' ){
240
+ version {
241
+ strictly htsjdkVersion
242
+ }
243
+ }
244
+
245
+ implementation (' com.google.cloud:google-cloud-nio' ){
246
+ version {
247
+ strictly googleCloudNioVersion
248
+ }
249
+ }
255
250
256
251
implementation ' com.google.cloud:google-cloud-bigquery:' + bigQueryVersion
257
252
implementation ' com.google.cloud:google-cloud-bigquerystorage:' + bigQueryStorageVersion
@@ -263,27 +258,32 @@ dependencies {
263
258
// should we want to)
264
259
implementation ' com.google.cloud.bigdataoss:gcs-connector:1.9.4-hadoop3'
265
260
266
- implementation ' org.apache.logging.log4j:log4j-api:' + log4j2Version
267
- implementation ' org.apache.logging.log4j:log4j-core:' + log4j2Version
261
+ implementation platform(' org.apache.logging.log4j:log4j-bom:' + log4j2Version)
262
+ implementation ' org.apache.logging.log4j:log4j-api'
263
+ implementation ' org.apache.logging.log4j:log4j-core'
268
264
// include the apache commons-logging bridge that matches the log4j version we use so
269
265
// messages that originate with dependencies that use commons-logging (such as jexl)
270
266
// are routed to log4j
271
- implementation ' org.apache.logging.log4j:log4j-jcl:' + log4j2Version
267
+ implementation ' org.apache.logging.log4j:log4j-jcl'
268
+ // these two annotation dependencies
269
+ // are needed because log4j-core isn't meant to be included
270
+ // at compile time so it doesn't include its own annotations
271
+ // https://github.com/apache/logging-log4j2/issues/3110
272
+ implementation ' biz.aQute.bnd:biz.aQute.bnd.annotation'
273
+ implementation ' org.osgi:org.osgi.annotation.bundle'
274
+
272
275
273
276
implementation ' org.apache.commons:commons-lang3:3.14.0'
274
- implementation ' org.apache.commons:commons-math3:3.6.1'
277
+ implementation(' org.apache.commons:commons-math3' ){
278
+ version {
279
+ strictly ' 3.5' // changing this breaks ModelSegmentsIntegrationTests, they're quite brittle
280
+ }
281
+ because " updating this breaks ModelSegmentsIntegrationTests, they're quite brittle"
282
+ }
275
283
implementation ' org.hipparchus:hipparchus-stat:2.0'
276
284
implementation ' org.apache.commons:commons-collections4:4.4'
277
285
implementation ' org.apache.commons:commons-vfs2:2.9.0'
278
286
implementation ' org.apache.commons:commons-configuration2:2.10.1'
279
- constraints {
280
- implementation(' org.apache.commons:commons-text' ) {
281
- version {
282
- strictly ' 1.10.0'
283
- }
284
- because ' previous versions have a nasty vulnerability: https://nvd.nist.gov/vuln/detail/CVE-2022-42889'
285
- }
286
- }
287
287
288
288
implementation ' org.apache.httpcomponents:httpclient:4.5.13'
289
289
implementation ' commons-beanutils:commons-beanutils:1.9.4'
@@ -296,12 +296,11 @@ dependencies {
296
296
implementation ' org.broadinstitute:gatk-native-bindings:1.0.0'
297
297
298
298
implementation ' org.ojalgo:ojalgo:44.0.0'
299
- implementation (' org.ojalgo:ojalgo-commons-math3:1.0.0' ) {
299
+ implementation(' org.ojalgo:ojalgo-commons-math3:1.0.0' ){
300
300
exclude group : ' org.apache.commons'
301
301
}
302
302
303
- // TODO: migrate to mllib_2.12.15?
304
- implementation (' org.apache.spark:spark-mllib_2.12:' + sparkVersion) {
303
+ implementation (' org.apache.spark:spark-mllib_2.13:' + sparkVersion) {
305
304
// JUL is used by Google Dataflow as the backend logger, so exclude jul-to-slf4j to avoid a loop
306
305
exclude module : ' jul-to-slf4j'
307
306
exclude module : ' javax.servlet'
@@ -312,28 +311,29 @@ dependencies {
312
311
implementation ' org.jgrapht:jgrapht-core:1.1.0'
313
312
implementation ' org.jgrapht:jgrapht-io:1.1.0'
314
313
315
- implementation( ' org.disq-bio:disq:' + disqVersion)
316
- implementation( ' org.apache.hadoop:hadoop-client:' + hadoopVersion) // should be a 'provided' dependency
317
- implementation( ' com.github.jsr203hadoop:jsr203hadoop:1.0.3' )
314
+ implementation ' org.disq-bio:disq:' + disqVersion
315
+ implementation ' org.apache.hadoop:hadoop-client:' + hadoopVersion // should be a 'provided' dependency
316
+ implementation ' com.github.jsr203hadoop:jsr203hadoop:1.0.3'
318
317
319
- implementation(' org.apache.orc:orc:1.6.5' )
320
- implementation(' de.javakaffee:kryo-serializers:0.45' ) {
321
- exclude module : ' kryo' // use Spark's version
318
+ implementation ' org.apache.orc:orc:1.6.5'
319
+ implementation ' de.javakaffee:kryo-serializers:0.45'
320
+ implementation (' com.esotericsoftware:kryo' ){
321
+ version {
322
+ strictly ' 4.+' // we're not compatible with kryo 5+
323
+ }
322
324
}
323
325
324
326
// Dependency change for including MLLib
325
- implementation( ' org.objenesis:objenesis:1.2' )
326
- testImplementation( ' org.objenesis:objenesis:2.1' )
327
+ implementation ' org.objenesis:objenesis:1.2'
328
+ testImplementation ' org.objenesis:objenesis:2.1'
327
329
328
330
// Comment the next lines to disable native code proxies in Spark MLLib
329
- implementation( ' com.github.fommil.netlib:netlib-native_ref-osx-x86_64:1.1:natives' )
330
- implementation( ' com.github.fommil.netlib:netlib-native_ref-linux-x86_64:1.1:natives' )
331
- implementation( ' com.github.fommil.netlib:netlib-native_system-linux-x86_64:1.1:natives' )
332
- implementation( ' com.github.fommil.netlib:netlib-native_system-osx-x86_64:1.1:natives' )
331
+ implementation ' com.github.fommil.netlib:netlib-native_ref-osx-x86_64:1.1:natives'
332
+ implementation ' com.github.fommil.netlib:netlib-native_ref-linux-x86_64:1.1:natives'
333
+ implementation ' com.github.fommil.netlib:netlib-native_system-linux-x86_64:1.1:natives'
334
+ implementation ' com.github.fommil.netlib:netlib-native_system-osx-x86_64:1.1:natives'
333
335
334
- implementation(' com.intel.gkl:gkl:0.8.11' ) {
335
- exclude module : ' htsjdk'
336
- }
336
+ implementation ' com.intel.gkl:gkl:' + gklVersion
337
337
338
338
implementation ' org.broadinstitute:gatk-bwamem-jni:1.0.4'
339
339
implementation ' org.broadinstitute:gatk-fermilite-jni:1.2.0'
@@ -344,12 +344,50 @@ dependencies {
344
344
implementation ' org.xerial:sqlite-jdbc:3.44.1.0'
345
345
346
346
// natural sort
347
- implementation(' net.grey-panther:natural-comparator:1.1' )
348
- implementation(' com.fasterxml.jackson.module:jackson-module-scala_2.12:2.9.8' )
347
+ implementation ' net.grey-panther:natural-comparator:1.1'
348
+ implementation ' com.fasterxml.jackson.module:jackson-module-scala_2.13:2.9.8'
349
+
350
+ /* ******** Update transitive dependencies that have known vulnerabilities in this section *******/
351
+ constraints {
352
+ // all of these constraints are here to force upgrades from lower versions of these libraries which are included
353
+ // as transitive dependencies
354
+ // once the libraries that make use of these move forward we can remove these constraints
355
+
356
+ implementation ' com.google.protobuf:protobuf-java:3.25.5'
357
+ implementation ' dnsjava:dnsjava:3.6.0'
358
+ implementation ' org.apache.commons:commons-compress:1.26.0'
359
+ implementation ' org.apache.ivy:ivy:2.5.2'
360
+ implementation ' org.apache.commons:commons-text:1.10.0' because ' of https://nvd.nist.gov/vuln/detail/CVE-2022-42889'
361
+ implementation ' ch.qos.logback:logback-classic:1.4.14'
362
+ implementation ' ch.qos.logback:logback-core:1.4.14'
363
+ implementation ' org.apache.avro:avro:1.12.0'
364
+ implementation ' io.airlift:aircompressor:0.27'
365
+ implementation ' org.scala-lang:scala-library:2.13.14'
366
+ implementation ' com.nimbusds:nimbus-jose-jwt:9.41.2'
367
+ implementation ' org.codehaus.janino:janino:3.1.12'
368
+ implementation ' org.apache.zookeeper:zookeeper:3.9.2'
369
+ implementation ' org.jetbrains.kotlin:kotlin-stdlib:1.9.25'
370
+ implementation ' com.squareup.okio:okio:3.9.1'
371
+ implementation ' org.codehaus.jettison:jettison:1.5.4'
372
+ implementation ' org.eclipse.jetty:jetty-http:9.4.56.v20240826'
373
+ implementation ' org.xerial.snappy:snappy-java:1.1.10.4'
374
+ }
375
+
376
+ // use netty bom to enforce same netty version
377
+ // this upgrades all transitive netty dependencies without adding a direct dependency on netty
378
+ implementation platform(' io.netty:netty-bom:4.1.114.Final' )
379
+
380
+ /* ***********************************************************************************************/
381
+
349
382
350
383
testUtilsImplementation sourceSets. main. output
351
384
testUtilsImplementation ' org.testng:testng:' + testNGVersion
352
385
testUtilsImplementation ' org.apache.hadoop:hadoop-minicluster:' + hadoopVersion
386
+ // this is a replacement for the transitive dependency of minicluster: bcprov-jdk15on:1.70.0
387
+ // which is excluded for security purposes
388
+ // this causes this to act as direct dependency of ours but we don't actually rely on it except as a transitive
389
+ testUtilsImplementation ' org.bouncycastle:bcprov-jdk18on:1.78.1' //
390
+
353
391
354
392
testImplementation sourceSets. testUtils. output
355
393
0 commit comments