I removed the .m2 and Grape cache and tried this:
#!/usr/bin/env groovy @Grab(group='se.alipsa.matrix', module='matrix-bom',
version='2.1.0', type='pom')
@Grab('se.alipsa.matrix:matrix-core')
def userHome = System.getProperty("user.home")
File cacheDir =new
File(userHome,".groovy/grapes/se.alipsa.matrix/matrix-core/jars")
boolean coreJarExists =false println"Grape cache: ${cacheDir.absolutePath}jars:"
cacheDir.listFiles().eachWithIndex{ it, idx-> println idx +". " + it.name if
(it.name.contains("matrix-core-3.1.0.jar")) {
coreJarExists =true }
} println"\nmatrix-core-3.1.0.jar was ${coreJarExists ?'found' :'NOT found'}in
${cacheDir.absolutePath}"
And get the following output:
Grape cache: /home/per/.groovy/grapes/se.alipsa.matrix/matrix-core/jars
jars:
0. matrix-core-3.2.0.jar
matrix-core-3.1.0.jar was NOT found in
/home/per/.groovy/grapes/se.alipsa.matrix/matrix-core/jars
So it confirms that not specifying a version causes Grab to fetch
whatever latest version it can find in maven central ignoring the bom.
On 4/22/25 20:23, Per Nyfelt wrote:
Hi, is it possible to use boms in @Grab?
I tried the following in a groovy script:
#!/usr/bin/env groovy @Grab(group='se.alipsa.matrix', module='matrix-bom',
version='2.2.0', type='pom')
@Grab('se.alipsa.matrix:matrix-core')
import se.alipsa.matrix.core.*
import java.util.time.*
import java.time.LocalDate
Matrix empData =Matrix.builder()
.columns(
emp_id:1..5,
emp_name: ["Rick","Dan","Michelle","Ryan","Gary"],
salary: [623.3,515.2,611.0,729.0,843.25],
start_date:ListConverter.toLocalDates("2013-01-01","2012-03-27","2013-09-23","2014-11-15","2014-05-11"))
.types([int, String, Number, LocalDate])
.build()
println empData.content()
While it does fetch the bom file and everything "works", it does not
honor the versions specified in it and instead for the subsequent grab
(matrix-core), but just fetches the latest one from the .m2 cache
Is there a way to enforce the versions specified in the bom?
Regards,
Per