public InstrumentParseResult build()

in bytekit-core/src/main/java/com/alibaba/bytekit/asm/instrument/InstrumentTemplate.java [72:110]


    public InstrumentParseResult build() throws IOException {
        // 读取jar文件,解析出
        InstrumentParseResult result = new InstrumentParseResult();

        for (File file : jarFiles) {
            JarFile jarFile = null;
            try {
                jarFile = new JarFile(file);

                JarEntry propertiesEntry = jarFile.getJarEntry(INSTRUMENT_PROPERTIES);

                // 读配置文件
                if (propertiesEntry != null) {
                    InputStream inputStream = jarFile.getInputStream(propertiesEntry);
                    Properties properties = PropertiesUtils.loadNotNull(inputStream);

                    String triggerRetransformValue = properties.getProperty("triggerRetransform", "false"); // 使用默认值避免null值
                    boolean triggerRetransform = Boolean.parseBoolean(triggerRetransformValue);
                    for (Pair<String, byte[]> pair : readClassBytes(properties, INSTRUMENT, jarFile)) {
                        parse(result, pair.second, triggerRetransform);
                    }

                    for (Pair<String, byte[]> pair : readClassBytes(properties, DEFINE, jarFile)) {
                        result.addDefineClass(pair.first, pair.second);
                    }
                }

            } finally {
                IOUtils.close(jarFile);
            }
        }

        // 处理单独设置 byte[]
        for (byte[] classBytes : instrumentClassList) {
            parse(result, classBytes, false);
        }

        return result;
    }