github.com/noqcks/syft@v0.0.0-20230920222752-a9e2c4e288e5/syft/pkg/cataloger/java/cataloger.go (about) 1 /* 2 Package java provides a concrete Cataloger implementation for Java archives (jar, war, ear, par, sar, jpi, hpi, and native-image formats). 3 */ 4 package java 5 6 import ( 7 "github.com/anchore/syft/syft/pkg/cataloger/generic" 8 ) 9 10 // NewJavaCataloger returns a new Java archive cataloger object. 11 func NewJavaCataloger(cfg Config) *generic.Cataloger { 12 c := generic.NewCataloger("java-cataloger"). 13 WithParserByGlobs(parseJavaArchive, archiveFormatGlobs...) 14 15 if cfg.SearchIndexedArchives { 16 // java archives wrapped within zip files 17 c.WithParserByGlobs(parseZipWrappedJavaArchive, genericZipGlobs...) 18 } 19 20 if cfg.SearchUnindexedArchives { 21 // java archives wrapped within tar files 22 c.WithParserByGlobs(parseTarWrappedJavaArchive, genericTarGlobs...) 23 } 24 return c 25 } 26 27 // NewJavaPomCataloger returns a cataloger capable of parsing 28 // dependencies from a pom.xml file. 29 // Pom files list dependencies that maybe not be locally installed yet. 30 func NewJavaPomCataloger() *generic.Cataloger { 31 return generic.NewCataloger("java-pom-cataloger"). 32 WithParserByGlobs(parserPomXML, "**/pom.xml") 33 } 34 35 // NewJavaGradleLockfileCataloger returns a cataloger capable of parsing 36 // dependencies from a gradle.lockfile file. 37 // older versions of lockfiles aren't supported yet 38 func NewJavaGradleLockfileCataloger() *generic.Cataloger { 39 return generic.NewCataloger("java-gradle-lockfile-cataloger"). 40 WithParserByGlobs(parseGradleLockfile, gradleLockfileGlob) 41 }