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

Reply via email to