Skip to content

依赖分析示例

本页提供分析 Gradle 项目中依赖的示例。

基础依赖提取

列出所有依赖

go
package main

import (
    "fmt"
    "log"
    "github.com/scagogogo/gradle-parser/pkg/api"
)

func main() {
    deps, err := api.GetDependencies("build.gradle")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("找到 %d 个依赖:\n\n", len(deps))
    
    for i, dep := range deps {
        fmt.Printf("%d. %s:%s:%s (%s)\n", 
            i+1, dep.Group, dep.Name, dep.Version, dep.Scope)
    }
}

依赖分组

按作用域分组

go
package main

import (
    "fmt"
    "log"
    "github.com/scagogogo/gradle-parser/pkg/api"
)

func main() {
    deps, err := api.GetDependencies("build.gradle")
    if err != nil {
        log.Fatal(err)
    }

    depSets := api.DependenciesByScope(deps)
    
    for _, depSet := range depSets {
        fmt.Printf("\n=== %s 依赖 (%d) ===\n", 
            depSet.Scope, len(depSet.Dependencies))
        
        for _, dep := range depSet.Dependencies {
            fmt.Printf("  %s:%s:%s\n", dep.Group, dep.Name, dep.Version)
        }
    }
}

依赖分析

查找过时的依赖

go
package main

import (
    "fmt"
    "log"
    "github.com/scagogogo/gradle-parser/pkg/api"
)

// 模拟函数检查版本是否过时
func isOutdated(dep *api.Dependency) (bool, string) {
    // 这是一个简化的示例
    // 在实际使用中,您会检查依赖数据库
    outdatedVersions := map[string]string{
        "mysql:mysql-connector-java": "8.0.31",
        "org.springframework:spring-core": "5.3.23",
        "com.google.guava:guava": "31.1-jre",
    }
    
    key := fmt.Sprintf("%s:%s", dep.Group, dep.Name)
    if latestVersion, exists := outdatedVersions[key]; exists {
        if dep.Version != latestVersion {
            return true, latestVersion
        }
    }
    
    return false, ""
}

func main() {
    deps, err := api.GetDependencies("build.gradle")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("检查过时的依赖...\n")
    
    outdatedCount := 0
    for _, dep := range deps {
        if outdated, latestVersion := isOutdated(dep); outdated {
            fmt.Printf("⚠️  %s:%s\n", dep.Group, dep.Name)
            fmt.Printf("   当前: %s → 最新: %s\n", dep.Version, latestVersion)
            outdatedCount++
        }
    }
    
    if outdatedCount == 0 {
        fmt.Println("✅ 所有依赖都是最新的!")
    } else {
        fmt.Printf("\n📊 找到 %d 个过时的依赖\n", outdatedCount)
    }
}

下一步

基于 MIT 许可证发布。