github.com/anchore/syft@v1.4.2-0.20240516191711-1bec1fc5d397/syft/pkg/cataloger/java/cataloger.go (about) 1 /* 2 Package java provides a concrete Cataloger implementation for packages relating to the Java language ecosystem. 3 */ 4 package java 5 6 import ( 7 "github.com/anchore/syft/syft/pkg" 8 "github.com/anchore/syft/syft/pkg/cataloger/generic" 9 ) 10 11 // NewArchiveCataloger returns a new Java archive cataloger object for detecting packages with archives (jar, war, ear, par, sar, jpi, hpi, and native-image formats) 12 func NewArchiveCataloger(cfg ArchiveCatalogerConfig) pkg.Cataloger { 13 gap := newGenericArchiveParserAdapter(cfg) 14 15 c := generic.NewCataloger("java-archive-cataloger"). 16 WithParserByGlobs(gap.parseJavaArchive, archiveFormatGlobs...) 17 18 if cfg.IncludeIndexedArchives { 19 // java archives wrapped within zip files 20 gzp := newGenericZipWrappedJavaArchiveParser(cfg) 21 c.WithParserByGlobs(gzp.parseZipWrappedJavaArchive, genericZipGlobs...) 22 } 23 24 if cfg.IncludeUnindexedArchives { 25 // java archives wrapped within tar files 26 gtp := newGenericTarWrappedJavaArchiveParser(cfg) 27 c.WithParserByGlobs(gtp.parseTarWrappedJavaArchive, genericTarGlobs...) 28 } 29 return c 30 } 31 32 // NewPomCataloger returns a cataloger capable of parsing dependencies from a pom.xml file. 33 // Pom files list dependencies that maybe not be locally installed yet. 34 func NewPomCataloger(cfg ArchiveCatalogerConfig) pkg.Cataloger { 35 gap := newGenericArchiveParserAdapter(cfg) 36 37 return generic.NewCataloger("java-pom-cataloger"). 38 WithParserByGlobs(gap.parserPomXML, "**/pom.xml") 39 } 40 41 // NewGradleLockfileCataloger returns a cataloger capable of parsing dependencies from a gradle.lockfile file. 42 // Note: Older versions of lockfiles aren't supported yet 43 func NewGradleLockfileCataloger() pkg.Cataloger { 44 return generic.NewCataloger("java-gradle-lockfile-cataloger"). 45 WithParserByGlobs(parseGradleLockfile, gradleLockfileGlob) 46 }