You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

198 lines
5.7 KiB
Bash

#!/bin/bash
# Generate Maven pom.xml for decompiled project
# Usage: ./generate-pom.sh <project_dir> <group_id> <artifact_id>
set -e
PROJECT_DIR="${1:?Usage: generate-pom.sh <project_dir> <group_id> <artifact_id>}"
GROUP_ID="${2:-com.example}"
ARTIFACT_ID="${3:-$(basename "$PROJECT_DIR")}"
VERSION="1.0.0"
POM_FILE="$PROJECT_DIR/pom.xml"
echo "Generating Maven pom.xml..."
echo " Group: $GROUP_ID"
echo " Artifact: $ARTIFACT_ID"
echo " Output: $POM_FILE"
# Detect common frameworks from class names
SPRING=false
STRUTS=false
IBATIS=false
HIBERNATE=false
AXIS=false
# Scan for framework indicators
if find "$PROJECT_DIR" -name "*.java" -exec grep -l "org.springframework" {} \; 2>/dev/null | head -1 | grep -q .; then
SPRING=true
fi
if find "$PROJECT_DIR" -name "*.java" -exec grep -l "org.apache.struts" {} \; 2>/dev/null | head -1 | grep -q .; then
STRUTS=true
fi
if find "$PROJECT_DIR" -name "*.java" -exec grep -l "com.ibatis" {} \; 2>/dev/null | head -1 | grep -q .; then
IBATIS=true
fi
if find "$PROJECT_DIR" -name "*.java" -exec grep -l "org.hibernate" {} \; 2>/dev/null | head -1 | grep -q .; then
HIBERNATE=true
fi
if find "$PROJECT_DIR" -name "*.java" -exec grep -l "org.apache.axis" {} \; 2>/dev/null | head -1 | grep -q .; then
AXIS=true
fi
# Generate pom.xml
cat > "$POM_FILE" << EOF
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>${GROUP_ID}</groupId>
<artifactId>${ARTIFACT_ID}</artifactId>
<version>${VERSION}</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- JSP API -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
<scope>provided</scope>
</dependency>
EOF
# Add Spring dependencies if detected
if [ "$SPRING" = true ]; then
cat >> "$POM_FILE" << EOF
<!-- Spring Framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.18.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.18.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.18.RELEASE</version>
</dependency>
EOF
fi
# Add Struts if detected
if [ "$STRUTS" = true ]; then
cat >> "$POM_FILE" << EOF
<!-- Struts 2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.37</version>
</dependency>
EOF
fi
# Add iBatis if detected
if [ "$IBATIS" = true ]; then
cat >> "$POM_FILE" << EOF
<!-- iBatis -->
<dependency>
<groupId>org.apache.ibatis</groupId>
<artifactId>ibatis-sqlmap</artifactId>
<version>2.3.4.726</version>
</dependency>
EOF
fi
# Add Axis if detected
if [ "$AXIS" = true ]; then
cat >> "$POM_FILE" << EOF
<!-- Apache Axis (Web Services) -->
<dependency>
<groupId>org.apache.axis</groupId>
<artifactId>axis</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxrpc-api</artifactId>
<version>1.1</version>
</dependency>
EOF
fi
# Add Oracle JDBC (common in enterprise apps)
cat >> "$POM_FILE" << EOF
<!-- Oracle JDBC (install manually to local repo) -->
<!--
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.4</version>
</dependency>
-->
<!-- Logging -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- JUnit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>${ARTIFACT_ID}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
</plugin>
</plugins>
</build>
</project>
EOF
echo "Generated: $POM_FILE"
echo ""
echo "Detected frameworks:"
[ "$SPRING" = true ] && echo " ✓ Spring"
[ "$STRUTS" = true ] && echo " ✓ Struts"
[ "$IBATIS" = true ] && echo " ✓ iBatis"
[ "$AXIS" = true ] && echo " ✓ Axis Web Services"
echo ""
echo "Note: You may need to manually install Oracle JDBC to local Maven repo:"
echo " mvn install:install-file -Dfile=ojdbc14.jar -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.4 -Dpackaging=jar"