--- name: analyze-dependencies description: Analyze Java class dependencies, JAR requirements, and import relationships. Use when user needs to map dependencies, find missing libraries, or understand code relationships. version: 1.0.0 --- # Dependency Analysis This skill analyzes Java project dependencies and relationships. ## When to Use - User needs to find required JAR files - User wants to understand class relationships - User needs to identify missing dependencies - User wants to map import dependencies ## Analysis Types ### 1. Import Analysis Extract and analyze imports: ```bash # Get all imports find -name "*.java" -exec grep "^import" {} \; | \ sed 's/import //' | \ sed 's/;.*//' | \ sort -u # Count imports per file find -name "*.java" -exec sh -c 'echo "$(grep -c "^import" "$1") $1"' _ {} \; | \ sort -rn ``` ### 2. External Dependency Detection Identify required libraries: ```bash # Find external imports (non-project) find -name "*.java" -exec grep "^import" {} \; | \ sed 's/import //' | \ sed 's/;.*//' | \ grep -v "^com\.hst\." | \ sort -u ``` ### 3. JAR Dependency Mapping Map imports to JAR files: | Import Pattern | Likely JAR | |----------------|------------| | `org.springframework.*` | spring-*.jar | | `org.apache.struts.*` | struts2-core.jar | | `com.ibatis.*` | ibatis-sqlmap.jar | | `org.apache.axis.*` | axis.jar | | `javax.servlet.*` | servlet-api.jar | | `org.apache.log4j.*` | log4j.jar | | `java.sql.*` | JDK (built-in) | ### 4. Class Relationship Analysis Find related classes: ```bash # Find classes that extend/implement grep -r "extends\|implements" | \ sed 's/:.*extends/: extends/' | \ sed 's/:.*implements/: implements/' # Find interface implementations grep -r "implements" | \ sed 's/.*implements //' | \ sed 's/{.*//' | \ sort -u ``` ## Dependency Report Generate comprehensive report: ```bash bash C:/Users/K/.claude/plugins/cache/claude-plugins-official/plugin-dev/9eae436aa296/scripts/analyze-deps.sh ``` ## Resolving Dependencies ### Step 1: Identify Missing JARs ```bash # List required external packages find -name "*.java" -exec grep "^import" {} \; | \ sed 's/import //' | \ sed 's/;.*//' | \ cut -d. -f1-3 | \ sort -u ``` ### Step 2: Find JAR Sources Common sources: - Maven Central: https://search.maven.org/ - MVN Repository: https://mvnrepository.com/ - Project lib/ directory ### Step 3: Add to Build For Maven, add to pom.xml: ```xml org.springframework spring-context 3.2.18.RELEASE ``` ### Step 4: Verify Dependencies ```bash # Check if JARs are available mvn dependency:tree # Download dependencies mvn dependency:resolve ``` ## Common Dependency Groups ### Spring Framework ``` spring-context spring-web spring-jdbc spring-beans spring-core ``` ### Struts 2 ``` struts2-core struts2-spring-plugin xwork-core ognl freemarker ``` ### Database ``` ojdbc14 (Oracle) mysql-connector-java (MySQL) postgresql (PostgreSQL) commons-dbcp (Connection pooling) ``` ### Web Services ``` axis jaxrpc-api wsdl4j commons-discovery ``` ## Dependency Graph Visualize dependencies: ``` [Action Layer] ↓ [Service Layer] ↓ [DAO Layer] ↓ [Domain Layer] ↓ [External Libraries] ``` ## Integration After dependency analysis: 1. Update pom.xml with missing dependencies 2. Run `mvn dependency:resolve` to download 3. Run `mvn compile` to verify 4. Fix any remaining dependency issues