Documentation
¶
Overview ¶
Package java provides dependency resolution for Maven/Java packages.
Overview ¶
This package implements deps.Language for Java, supporting:
- Maven Central registry resolution via maven client
- pom.xml manifest parsing
Registry Resolution ¶
Use [Language.Resolver] to fetch dependencies from Maven Central:
resolver, _ := java.Language.Resolver()
g, _ := resolver.Resolve(ctx, "com.google.guava:guava", deps.Options{MaxDepth: 10})
Package names use Maven coordinates: "groupId:artifactId".
Manifest Parsing ¶
Parse pom.xml files:
parser, _ := java.Language.Manifest("pom", nil)
result, _ := parser.Parse("pom.xml", deps.Options{})
The parser extracts dependencies from <dependencies> elements, excluding test and provided scopes.
maven: github.com/stacktower-io/stacktower/pkg/integrations/maven deps.Language: github.com/stacktower-io/stacktower/pkg/core/deps.Language
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Language = &deps.Language{ Name: "java", DefaultRegistry: "maven", DefaultRuntimeVersion: "17", RegistryAliases: map[string]string{"maven-central": "maven", "mvn": "maven"}, ManifestTypes: []string{"pom", "gradle"}, ManifestAliases: map[string]string{ "pom.xml": "pom", "build.gradle": "gradle", "build.gradle.kts": "gradle", }, NewResolver: newResolver, NewManifest: newManifest, ManifestParsers: manifestParsers, NormalizeName: NormalizeCoordinate, }
Language provides Java dependency resolution via Maven Central. Supports pom.xml and build.gradle manifest files.
Functions ¶
func NormalizeCoordinate ¶
NormalizeCoordinate converts filename-safe coordinates to Maven format. Since colons are not allowed in filenames (especially on Windows and in some build tools), underscores can be used as a substitute. This function converts "groupId_artifactId" to "groupId:artifactId" when no colon is present.
Examples:
- "com.google.guava:guava" → "com.google.guava:guava" (unchanged)
- "com.google.guava_guava" → "com.google.guava:guava" (converted)
Types ¶
type GradleParser ¶
type GradleParser struct {
// contains filtered or unexported fields
}
GradleParser parses Gradle build files (build.gradle and build.gradle.kts). It extracts dependencies from both Groovy DSL and Kotlin DSL formats.
func (*GradleParser) IncludesTransitive ¶
func (p *GradleParser) IncludesTransitive() bool
func (*GradleParser) Parse ¶
func (p *GradleParser) Parse(path string, opts deps.Options) (*deps.ManifestResult, error)
func (*GradleParser) Supports ¶
func (p *GradleParser) Supports(name string) bool
func (*GradleParser) Type ¶
func (p *GradleParser) Type() string
type MavenMatcher ¶
type MavenMatcher struct{}
MavenMatcher implements constraint matching for Maven version ranges. Maven version syntax: - Exact: 1.0 - Range: [1.0,2.0), (1.0,2.0], [1.0,), (,2.0] - Multiple ranges: [1.0,2.0),[3.0,4.0)
func (MavenMatcher) ParseConstraint ¶
func (m MavenMatcher) ParseConstraint(constraint string) pubgrub.Condition
ParseConstraint converts a Maven version range to a PubGrub Condition.
func (MavenMatcher) ParseVersion ¶
func (MavenMatcher) ParseVersion(version string) pubgrub.Version
ParseVersion converts a Maven version string to a PubGrub Version. We use SimpleVersion to preserve the full version string including qualifiers like -jre, -android, -SNAPSHOT, etc. This ensures cache key consistency.