sustain/src/main/java/net/happyonroad/component/container/support/DefaultComponentRepository.java
public void start() {
        logger.info(banner("Scanning jars"));
        //先寻找 boot/*.jar，将其预加载为component
        File bootFolder = new File(home, "boot");
        try {
            scanJars(bootFolder);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir: {}", bootFolder, e.getMessage());
        }

        File appFolder = new File(home, "app");
        try {
            scanJars(appFolder);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for jars: {}", appFolder, e.getMessage());
        }
        //再寻找 lib/*.jar，将其预加载为component
        File libFolder = new File(home, "lib");
        try {
            scanJars(libFolder);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for jars: {}", libFolder, e.getMessage());
        }
        File poms = libFolder;
        try {
            //而后再遍历lib/poms下面的pom.xml，把packaging = pom 的父pom预加载进来
            scanPoms(poms);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for poms: {}", poms, e.getMessage());
        }
        File pomsJar = new File(libFolder, "poms.jar");
        if( pomsJar.exists())
            try {
                //而后再遍历lib/poms下面的pom.xml，把packaging = pom 的父pom预加载进来
                scanPomsJar(pomsJar);
            } catch (Exception e) {
                logger.error("Failed to scan {} poms.jar in {}", poms, e.getMessage());
            }

        //最后还要扫描扩展仓库目录 repository/*.jar
        File repositoryFolder = new File(home, "repository");
        try {
            scanJars(repositoryFolder);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for jars: {}", repositoryFolder, e.getMessage());
        }
        poms = repositoryFolder;
        try {
            //而后再遍历repository/poms下面的pom.xml，把不存在对应jar的 group pom预加载进来
            scanPoms(poms);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for poms: {}", poms, e.getMessage());
        }
        pomsJar = new File(repositoryFolder, "poms.jar");
        if( pomsJar.exists())
            try {
                //而后再遍历lib/poms下面的pom.xml，把packaging = pom 的父pom预加载进来
                scanPomsJar(pomsJar);
            } catch (Exception e) {
                logger.error("Failed to scan poms.jar in {}: {}", poms, e.getMessage());
            }
        logger.info(banner("Scanned  jars"));
    }
public void start() {
        logger.info(banner("Scanning jars"));
        //先寻找 boot/*.jar，将其预加载为component
        File bootFolder = new File(home, "boot");
        try {
            scanJars(bootFolder);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir: {}", bootFolder, e.getMessage());
        }

        File appFolder = new File(home, "app");
        try {
            scanJars(appFolder);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for jars: {}", appFolder, e.getMessage());
        }
        //再寻找 lib/*.jar，将其预加载为component
        File libFolder = new File(home, "lib");
        try {
            scanJars(libFolder);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for jars: {}", libFolder, e.getMessage());
        }
        File poms = libFolder;
        try {
            //而后再遍历lib/poms下面的pom.xml，把packaging = pom 的父pom预加载进来
            scanPoms(poms);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for poms: {}", poms, e.getMessage());
        }
        File pomsJar = new File(libFolder, "poms.jar");
        if( pomsJar.exists())
            try {
                //而后再遍历lib/poms下面的pom.xml，把packaging = pom 的父pom预加载进来
                scanPomsJar(pomsJar);
            } catch (Exception e) {
                logger.error("Failed to scan {} poms.jar in {}", poms, e.getMessage());
            }

        //最后还要扫描扩展仓库目录 repository/*.jar
        File repositoryFolder = new File(home, "repository");
        try {
            scanJars(repositoryFolder);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for jars: {}", repositoryFolder, e.getMessage());
        }
        poms = repositoryFolder;
        try {
            //而后再遍历repository/poms下面的pom.xml，把不存在对应jar的 group pom预加载进来
            scanPoms(poms);
        } catch (Exception e) {
            logger.error("Failed to scan {} dir for poms: {}", poms, e.getMessage());
        }
        pomsJar = new File(repositoryFolder, "poms.jar");
        if( pomsJar.exists())
            try {
                //而后再遍历lib/poms下面的pom.xml，把packaging = pom 的父pom预加载进来
                scanPomsJar(pomsJar);
            } catch (Exception e) {
                logger.error("Failed to scan poms.jar in {}: {}", poms, e.getMessage());
            }
        logger.info(banner("Scanned  jars"));
    }
启动时预加载 lib目录, lib/poms 下所有的组件信息