#!/bin/bash # Install all 255 JARs from original fat JAR to isolated .m2 repo # Usage: bash install-libs.sh set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" ALL_LIB="$SCRIPT_DIR/all-lib" LOCAL_REPO="$SCRIPT_DIR/.m2-isolated/repository" mkdir -p "$LOCAL_REPO" echo "Installing JARs to $LOCAL_REPO" count=0 for f in "$ALL_LIB"/*.jar; do name=$(basename "$f" .jar) # Determine group:artifact:version based on filename pattern case "$name" in spring-boot-starter-*) g="org.springframework.boot"; a="$name"; v="${name#spring-boot-starter-}" ;; spring-cloud-starter-*) g="org.springframework.cloud"; a="$name"; v="" ;; spring-*) g="org.springframework"; a="$name"; v="" ;; jackson-*) g="com.fasterxml.jackson.core"; a="$name"; v="" ;; feign-*) g="io.github.openfeign"; a="$name"; v="" ;; ribbon-*|hystrix-*|servo-*|archaius-*|netflix-*|rxjava*|rxnetty*) g="com.netflix"; a="$name"; v="" ;; cloudwalk-*) g="cn.cloudwalk.cloud"; a="$name"; v="" ;; cwos-*) g="cn.cloudwalk.cwos"; a="$name"; v="" ;; davinci-*) g="cn.cloudwalk.intelligent"; a="$name"; v="" ;; ninca-*) g="cn.cloudwalk.ninca"; a="$name"; v="" ;; ai-cloud-task-*) g="cn.cloudwalk.task"; a="$name"; v="" ;; mybatis-*) g="org.mybatis"; a="$name"; v="" ;; pagehelper-*) g="com.github.pagehelper"; a="$name"; v="" ;; lombok-*) g="org.projectlombok"; a="$name"; v="" ;; fastjson-*) g="com.alibaba"; a="$name"; v="" ;; hutool-*) g="cn.hutool"; a="$name"; v="" ;; poi-*) g="org.apache.poi"; a="$name"; v="" ;; quartz-*) g="org.quartz-scheduler"; a="$name"; v="" ;; okhttp*|okio*) g="com.squareup.okhttp3"; a="$name"; v="" ;; httpclient*|httpcore*) g="org.apache.httpcomponents"; a="$name"; v="" ;; commons-*) g="org.apache.commons"; a="$name"; v="" ;; tomcat-*) g="org.apache.tomcat"; a="$name"; v="" ;; slf4j-*) g="org.slf4j"; a="$name"; v="" ;; logback-*) g="ch.qos.logback"; a="$name"; v="" ;; jackson-*) g="com.fasterxml.jackson.core"; a="$name"; v="" ;; zookeeper-*|curator-*) g="org.apache.zookeeper"; a="$name"; v="" ;; kafka-*) g="org.apache.kafka"; a="$name"; v="" ;; consul-*) g="com.ecwid.consul"; a="$name"; v="" ;; dubbo-*) g="com.alibaba"; a="$name"; v="" ;; druid-*) g="com.alibaba"; a="$name"; v="" ;; jedis-*) g="redis.clients"; a="$name"; v="" ;; mysql-*) g="mysql"; a="$name"; v="" ;; gson-*) g="com.google.code.gson"; a="$name"; v="" ;; guava-*) g="com.google.guava"; a="$name"; v="" ;; opencv-*|javacpp*) g="org.bytedeco"; a="$name"; v="" ;; springside-*) g="org.springside"; a="$name"; v="" ;; zip4j-*) g="net.lingala.zip4j"; a="$name"; v="" ;; jasypt-*) g="org.jasypt"; a="$name"; v="" ;; opencsv-*) g="net.sf.opencsv"; a="$name"; v="" ;; maven-*) g="org.apache.maven"; a="$name"; v="" ;; plexus-*) g="org.codehaus.plexus"; a="$name"; v="" ;; reflections-*) g="org.reflections"; a="$name"; v="" ;; thumbnailator-*) g="net.coobird"; a="$name"; v="" ;; snakeyaml-*) g="org.yaml"; a="$name"; v="" ;; hibernate-*) g="org.hibernate"; a="$name"; v="" ;; validation-api*) g="javax.validation"; a="$name"; v="" ;; javax.inject*) g="javax.inject"; a="$name"; v="" ;; servlet-api*|javax.servlet*) g="javax.servlet"; a="$name"; v="" ;; joda-time*) g="joda-time"; a="$name"; v="" ;; jcl-over-slf4j*|jul-to-slf4j*|log4j-over-slf4j*) g="org.slf4j"; a="$name"; v="" ;; log4j*) g="log4j"; a="$name"; v="" ;; *) g="lib.ext"; a="$name"; v="1.0" ;; esac # Skip opencv/javacpp (native) echo "$name" | grep -q 'opencv\|javacpp' && continue # Determine version if [ -z "$v" ]; then v=$(echo "$name" | grep -oP '\d[\d.]*.*' || echo "1.0") a=$(echo "$name" | sed 's/-[0-9].*//') fi # Build artifact directory dir="$LOCAL_REPO/$(echo $g | tr '.' '/')/$a/$v" mkdir -p "$dir" cp "$f" "$dir/$a-$v.jar" # Generate minimal pom cat > "$dir/$a-$v.pom" << POMEOF 4.0.0 $g$a$v POMEOF count=$((count + 1)) if [ $((count % 50)) -eq 0 ]; then echo " $count/255"; fi done echo "Installed $count JARs to $LOCAL_REPO"