Audits Java/Maven/Gradle dependencies for vulnerabilities, licenses, outdated packages, and supply chain risks. Supports configurable scope, focus, and output formats like report, JSON, SARIF, remediation.
From developer-kit-javanpx claudepluginhub giuseppe-trisciuoglio/developer-kit --plugin developer-kit-java[scope] [focus] [format]Perform comprehensive dependency analysis for Java/Maven/Gradle projects to identify security vulnerabilities, licensing issues, outdated packages, and supply chain risks with actionable remediation strategies.
Validates Java project dependencies with vulnerability scanning, license compliance, and supply chain security analysis. Use when auditing project dependencies or before releases.
/devkit.java.dependency-audit $ARGUMENTS
$1 specifies the scope (optional - defaults to all):
all - Complete dependency audit (vulnerabilities, licenses, outdated)security - Focus on CVEs and security vulnerabilities onlylicenses - License compliance and compatibility analysisoutdated - Identify outdated dependencies with update recommendationssupply-chain - Supply chain security risks (typosquatting, maintainer changes)transitive - Focus on transitive (indirect) dependencies<groupId:artifactId> - Analyze specific dependency (e.g., org.springframework.boot:spring-boot-starter)$2 specifies the focus area (optional - defaults to comprehensive):
comprehensive - All analysis categoriescritical-only - Only critical and high severity issuesproduction - Focus on production runtime dependenciesdirect - Only direct dependencies (exclude transitive)cve - CVE database cross-referencecompliance - License and regulatory compliance$3 specifies the output format (optional - defaults to report):
report - Detailed markdown reportsummary - Executive summary with metricsjson - Machine-readable JSON formatsarif - SARIF format for CI/CD integrationremediation - Actionable fix commands and PRsAgent Selection: To execute this task, use the following agent with fallback:
developer-kit-javajava-security-expertdeveloper-kit-java:java-security-expert or fallback to general-purpose agentls -la | grep -E "(pom\.xml|build\.gradle|build\.gradle\.kts)"if [ -f pom.xml ]; then mvn dependency:list 2>/dev/null | head -30; elif [ -f build.gradle ]; then ./gradlew dependencies 2>/dev/null | head -30; fiif [ -f pom.xml ]; then mvn dependency:tree 2>/dev/null | wc -l; elif [ -f build.gradle ]; then ./gradlew dependencies 2>/dev/null | wc -l; fiComprehensive dependency scanning:
Maven Dependency Analysis
# List all dependencies with scope
mvn dependency:list -DoutputFile=dependencies.txt
# Full dependency tree
mvn dependency:tree -Dverbose -DoutputFile=dependency-tree.txt
# Dependency convergence check
mvn dependency:analyze -DignoreNonCompile=true
# Dependency resolution analysis
mvn dependency:resolve -Dclassifier=sources
Gradle Dependency Analysis
# All configurations
./gradlew dependencies > gradle-dependencies.txt
# Specific configuration
./gradlew dependencies --configuration compileClasspath
# Dependency insight for specific library
./gradlew dependencyInsight --dependency org.springframework.boot:spring-boot-starter
# Build scan for analysis
./gradlew build --scan
Dependency Classification
Check against multiple vulnerability databases:
OWASP Dependency-Check (Maven)
# Install and run OWASP Dependency-Check
mvn org.owasp:dependency-check-maven:check
# Generate report with specific format
mvn org.owasp:dependency-check-maven:check \
-Dformat=HTML,JSON,XML \
-DfailBuildOnCVSS=7 \
-DsuppressionFile=owasp-suppressions.xml
# Check specific artifact
mvn org.owasp:dependency-check-maven:check \
-Dartifact=org.springframework.boot:spring-boot-starter-web:3.2.0
OWASP Dependency-Check (Gradle)
# Apply plugin and run
./gradlew dependencyCheckAnalyze
# With custom configuration
./gradlew dependencyCheckAnalyze \
--info \
-PfailBuildOnCVSS=7
Snyk Security Scanning
# Test for vulnerabilities
snyk test --all-projects
# Test with Maven
snyk test --file=pom.xml
# Test with Gradle
snyk test --file=build.gradle
# Generate JSON report
snyk test --json > snyk-report.json
# Monitor project continuously
snyk monitor
GitHub Advisory Database
# Using GitHub CLI
gh api graphql -f query='
{
securityVulnerabilities(first: 100, ecosystem: MAVEN, package: "org.springframework.boot") {
nodes {
advisory {
summary
severity
cvss { score }
references { url }
}
vulnerableVersionRange
firstPatchedVersion { identifier }
}
}
}'
Severity Analysis
Categorize vulnerabilities by severity:
CRITICAL (CVSS 9.0-10.0): Immediate action required
HIGH (CVSS 7.0-8.9): Priority fix within days
MEDIUM (CVSS 4.0-6.9): Fix within weeks
LOW (CVSS 0.1-3.9): Fix in regular updates
Verify license compatibility and legal risks:
License Detection (Maven)
# Generate license report
mvn license:aggregate-third-party-report
# Download licenses
mvn license:download-licenses
# Check for specific licenses
mvn license:add-third-party \
-Dlicense.excludedLicenses="GPL-3.0,AGPL-3.0"
# License overview
mvn project-info-reports:dependencies
License Detection (Gradle)
# Using license plugin
./gradlew downloadLicenses
# Generate license report
./gradlew generateLicenseReport
# Check license compatibility
./gradlew checkLicense
License Compatibility Matrix
Common Java dependency licenses:
Compliance Rules
// Example compatibility check
License projectLicense = License.APACHE_2_0;
Map<License, Boolean> compatibility = Map.of(
License.MIT, true, // ✅ Compatible
License.APACHE_2_0, true, // ✅ Compatible
License.BSD_3_CLAUSE, true, // ✅ Compatible
License.EPL_2_0, true, // ✅ Compatible with conditions
License.LGPL_3_0, true, // ✅ For linking only
License.GPL_3_0, false, // ❌ Incompatible (copyleft)
License.AGPL_3_0, false, // ❌ Incompatible (strong copyleft)
License.UNKNOWN, false // ⚠️ Requires review
);
Identify dependencies requiring updates:
Maven Versions Plugin
# Display dependency updates
mvn versions:display-dependency-updates
# Display plugin updates
mvn versions:display-plugin-updates
# Display property updates
mvn versions:display-property-updates
# Check for latest versions
mvn versions:use-latest-versions -DallowMajorUpdates=false
# Dependency updates report
mvn versions:dependency-updates-report
Gradle Versions Plugin
# Check for dependency updates
./gradlew dependencyUpdates
# Show only latest versions
./gradlew dependencyUpdates -Drevision=release
# JSON report
./gradlew dependencyUpdates -DoutputFormatter=json
# Check specific configuration
./gradlew dependencyUpdates --configuration compileClasspath
Update Priority Scoring
Calculate priority for each outdated dependency:
Priority Score = (Severity × 10) + (Age Factor × 5) + (Releases Behind × 2)
Where:
- Severity: Has security fix (10), Major (3), Minor (2), Patch (1)
- Age Factor: >365 days (10), >180 days (7), >90 days (4), <90 days (1)
- Releases Behind: Number of versions behind latest
Maintenance Status
Detect supply chain attacks and risks:
Typosquatting Detection
# Check for common typos of popular packages
# Example suspicious patterns:
# - org.springframework -> org.springframework-boot (legitimate)
# - org.springfranework (typo - suspicious)
# - com.google.guava -> com.google.guava-beta (check legitimacy)
Common Typosquatting Patterns
spring → sprimg, springgcommons-io → common-io, commons-iooorg.apache → org.apachi, io.apachespring-boot → springboot, spring_bootMaintainer Change Analysis
# Check recent maintainer changes (Maven Central)
curl -s "https://search.maven.org/solrsearch/select?q=g:${GROUP_ID}+AND+a:${ARTIFACT_ID}&rows=1&wt=json" | \
jq '.response.docs[0]'
# Verify artifact signatures
mvn verify -Dgpg.skip=false
# Check PGP signatures
gpg --verify artifact.jar.asc artifact.jar
Red Flags
Package Health Metrics
# Check Maven Central metadata
curl "https://repo1.maven.org/maven2/${GROUP_PATH}/${ARTIFACT}/maven-metadata.xml"
# Verify checksums
sha1sum -c artifact.jar.sha1
md5sum -c artifact.jar.md5
# Check repository activity
gh api repos/${OWNER}/${REPO}/commits --jq 'length'
gh api repos/${OWNER}/${REPO}/issues --jq 'length'
Analyze impact on build and runtime:
JAR Size Analysis
# List all JARs with sizes
find ~/.m2/repository -name "*.jar" -exec du -sh {} \; | sort -rh | head -20
# Gradle build scan
./gradlew build --scan
# Check "Dependencies" section for size breakdown
# Analyze specific dependency size
mvn dependency:tree -Dincludes=${GROUP_ID}:${ARTIFACT_ID} -Dverbose
Classpath Analysis
# Duplicate class detection
mvn dependency:analyze-duplicate
# Unused dependencies
mvn dependency:analyze
# Dependency convergence
mvn dependency:tree -Dverbose | grep "conflict"
# Spring Boot dependency report
mvn spring-boot:build-info
# Effective POM with Spring Boot parent
mvn help:effective-pom > effective-pom.xml
# Spring Boot Actuator dependency endpoints
curl http://localhost:8080/actuator/conditions
curl http://localhost:8080/actuator/configprops
Spring Boot Starters Audit
# Check Hibernate version compatibility
mvn dependency:tree -Dincludes=org.hibernate:*
# JPA provider conflicts
mvn dependency:tree -Dincludes=javax.persistence:*,jakarta.persistence:*
# Detect logging framework conflicts
mvn dependency:tree -Dincludes=org.slf4j:*,ch.qos.logback:*,log4j:*
# Check for Log4Shell vulnerable versions
mvn dependency:tree -Dincludes=org.apache.logging.log4j:log4j-core | grep -E "2\.(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16)"
Generate fix scripts and pull requests:
Maven Auto-Fix Script
#!/bin/bash
# maven-dependency-fix.sh
echo "🔧 Maven Dependency Auto-Remediation"
echo "======================================"
# Backup current POM
cp pom.xml pom.xml.backup.$(date +%Y%m%d_%H%M%S)
# Fix critical security vulnerabilities
echo "🔒 Fixing critical vulnerabilities..."
mvn versions:use-latest-releases \
-Dincludes=org.springframework.boot:*,org.springframework:* \
-DallowMajorUpdates=false
# Update patch versions only (safe)
echo "📦 Updating patch versions..."
mvn versions:use-latest-releases \
-DallowMinorUpdates=false \
-DallowMajorUpdates=false
# Check for build success
mvn clean verify -DskipTests
if [ $? -eq 0 ]; then
echo "✅ Build successful"
# Generate dependency report
mvn dependency:analyze-report
mvn versions:dependency-updates-report
# Commit changes
git add pom.xml
git commit -m "chore(deps): Security fixes and patch updates"
else
echo "❌ Build failed, reverting changes..."
mv pom.xml.backup.* pom.xml
fi
Gradle Auto-Fix Script
#!/bin/bash
# gradle-dependency-fix.sh
echo "🔧 Gradle Dependency Auto-Remediation"
echo "======================================"
# Backup build files
cp build.gradle build.gradle.backup.$(date +%Y%m%d_%H%M%S)
[ -f gradle/libs.versions.toml ] && cp gradle/libs.versions.toml gradle/libs.versions.toml.backup
# Update dependencies
./gradlew useLatestVersions --update-dependency-locks
# Verify build
./gradlew clean build -x test
if [ $? -eq 0 ]; then
echo "✅ Build successful"
# Generate reports
./gradlew dependencyUpdates
./gradlew dependencyCheckAnalyze
# Commit changes
git add build.gradle gradle/
git commit -m "chore(deps): Security fixes and dependency updates"
else
echo "❌ Build failed, reverting..."
mv build.gradle.backup.* build.gradle
[ -f gradle/libs.versions.toml.backup ] && mv gradle/libs.versions.toml.backup gradle/libs.versions.toml
fi
Pull Request Template
## 🔒 Dependency Security Audit Fixes
### Summary
This PR addresses [X] security vulnerabilities and [Y] outdated dependencies identified by automated dependency audit.
### Vulnerabilities Fixed
| Dependency | CVE | Severity | Old Version | New Version |
|------------|-----|----------|-------------|-------------|
| spring-core | CVE-2024-XXXX | CRITICAL | 5.3.20 | 5.3.31 |
| jackson-databind | CVE-2024-YYYY | HIGH | 2.13.0 | 2.15.3 |
### License Compliance
- ✅ All dependencies maintain Apache-2.0 compatibility
- ✅ No new GPL/AGPL dependencies introduced
- ⚠️ Review required for: [dependency-name] (LGPL-3.0)
### Testing
- [x] Unit tests pass
- [x] Integration tests pass
- [x] Security scan shows no critical/high vulnerabilities
- [x] Build successful
- [x] No breaking changes detected
### Dependency Changes
```diff
- org.springframework.boot:spring-boot-starter-web:3.1.0
+ org.springframework.boot:spring-boot-starter-web:3.2.1
- com.fasterxml.jackson.core:jackson-databind:2.13.0
+ com.fasterxml.jackson.core:jackson-databind:2.15.3
### 9. Continuous Monitoring
Set up automated dependency monitoring:
**GitHub Actions Workflow**
```yaml
name: Dependency Audit
on:
schedule:
- cron: '0 8 * * 1' # Weekly Monday 8 AM
push:
paths:
- 'pom.xml'
- 'build.gradle'
- 'gradle/libs.versions.toml'
pull_request:
workflow_dispatch:
jobs:
dependency-audit:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: OWASP Dependency Check
run: |
if [ -f pom.xml ]; then
mvn org.owasp:dependency-check-maven:check \
-Dformat=HTML,JSON \
-DfailBuildOnCVSS=7
elif [ -f build.gradle ]; then
./gradlew dependencyCheckAnalyze
fi
- name: Snyk Security Scan
uses: snyk/actions/maven@master
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
with:
args: --severity-threshold=high
- name: License Compliance Check
run: |
if [ -f pom.xml ]; then
mvn license:aggregate-third-party-report
fi
- name: Upload Reports
if: always()
uses: actions/upload-artifact@v4
with:
name: dependency-audit-reports
path: |
target/dependency-check-report.html
target/site/third-party-report.html
- name: Create Issue for Critical Vulnerabilities
if: failure()
uses: actions/github-script@v7
with:
script: |
const issue = await github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: '🚨 Critical Security Vulnerabilities Detected',
body: 'Automated dependency audit found critical vulnerabilities. See workflow run for details.',
labels: ['security', 'dependencies', 'critical']
});
Generate comprehensive audit reports:
Executive Summary
# Dependency Audit Report
**Project**: [Project Name]
**Date**: 2024-01-15
**Build System**: Maven 3.9.5
**Total Dependencies**: 247 (direct: 32, transitive: 215)
## Risk Assessment
- **Overall Risk**: ⚠️ MEDIUM
- **Critical Issues**: 0
- **High Severity**: 3
- **Medium Severity**: 12
- **Low Severity**: 8
## Key Findings
1. ✅ No critical vulnerabilities
2. ⚠️ 3 high-severity CVEs requiring immediate attention
3. ✅ License compliance: All compatible with Apache-2.0
4. ⚠️ 15 dependencies outdated by >1 year
5. ⚠️ 1 dependency with maintainer change in last 30 days
## Immediate Actions Required
1. Update `jackson-databind` to 2.15.3 (CVE-2024-XXXX - HIGH)
2. Replace `commons-collections` 3.2.1 (CVE-2015-YYYY - HIGH)
3. Review `suspicious-lib` 1.0.0 (supply chain risk)
Based on the specified scope and focus, provide:
Dependency Inventory Report
Security Vulnerability Analysis
License Compliance Report
Outdated Dependencies Report
Supply Chain Security Analysis
Automated Remediation Plan
Continuous Monitoring Setup
Focus on actionable insights that enable teams to maintain secure, compliant, and efficient dependency management for Java enterprise applications.
/devkit.java.dependency-audit example-input