github.com/lineaje-labs/syft@v0.98.1-0.20231227153149-9e393f60ff1b/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) *generic.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 // java archives wrapped within rpm files 29 grp := newGenericRPMWrappedJavaArchiveParser(cfg) 30 c.WithParserByGlobs(grp.parseRPMJavaArchive, genericRpmGlobs...) 31 } 32 return c 33 } 34 35 // NewPomCataloger returns a cataloger capable of parsing dependencies from a pom.xml file. 36 // Pom files list dependencies that maybe not be locally installed yet. 37 func NewPomCataloger() pkg.Cataloger { 38 return generic.NewCataloger("java-pom-cataloger"). 39 WithParserByGlobs(parserPomXML, "**/pom.xml") 40 } 41 42 // NewGradleLockfileCataloger returns a cataloger capable of parsing dependencies from a gradle.lockfile file. 43 // Note: Older versions of lockfiles aren't supported yet 44 func NewGradleLockfileCataloger() pkg.Cataloger { 45 return generic.NewCataloger("java-gradle-lockfile-cataloger"). 46 WithParserByGlobs(parseGradleLockfile, gradleLockfileGlob) 47 }