diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/config/MybatisFlexConfig.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/config/MybatisFlexConfig.java index 4b5f2686..bcc6dbd2 100644 --- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/config/MybatisFlexConfig.java +++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/config/MybatisFlexConfig.java @@ -16,11 +16,17 @@ package com.mybatisflex.processor.config; +import com.mybatisflex.processor.util.FileUtil; + import javax.annotation.processing.Filer; import javax.tools.FileObject; import javax.tools.StandardLocation; -import java.io.*; +import java.io.File; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import java.util.Properties; @@ -49,8 +55,16 @@ public class MybatisFlexConfig { FileObject aptConfigFileObject = filer.getResource(StandardLocation.CLASS_OUTPUT, "", APT_FILE_NAME); List aptConfigFiles = new ArrayList<>(); + File moduleRoot = new File(aptConfigFileObject.toUri()).getParentFile().getParentFile().getParentFile(); - while (new File(moduleRoot, "pom.xml").exists()) { + + // pom.xml -> Maven 项目 + // build.gradle -> Gradle 项目 + if (new File(moduleRoot, "build.gradle").exists()) { + FileUtil.setBuildFile("build.gradle"); + } + + while (FileUtil.existsBuildFile(moduleRoot)) { File aptConfig = new File(moduleRoot, APT_FILE_NAME); if (aptConfig.exists()) { aptConfigFiles.add(aptConfig); @@ -59,7 +73,7 @@ public class MybatisFlexConfig { } for (File aptConfigFile : aptConfigFiles) { - try (InputStream stream = new FileInputStream(aptConfigFile); + try (InputStream stream = Files.newInputStream(aptConfigFile.toPath()); Reader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) { Properties config = new Properties(); @@ -71,7 +85,7 @@ public class MybatisFlexConfig { properties.put(key, config.getProperty((String) key)); } if ("processor.stopBubbling".equalsIgnoreCase((String) key) - && "true".equalsIgnoreCase(String.valueOf(config.getProperty((String) key)))) { + && "true".equalsIgnoreCase(String.valueOf(config.getProperty((String) key)))) { stopBubbling = true; } } @@ -90,4 +104,4 @@ public class MybatisFlexConfig { return properties.getProperty(key.getConfigKey(), key.getDefaultValue()); } -} \ No newline at end of file +} diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/util/FileUtil.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/util/FileUtil.java index 60e6e8cf..3ed2ae24 100644 --- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/util/FileUtil.java +++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/util/FileUtil.java @@ -29,6 +29,16 @@ public class FileUtil { private FileUtil() { } + private static String buildFile = "pom.xml"; + + public static void setBuildFile(String buildFile) { + FileUtil.buildFile = buildFile; + } + + public static boolean existsBuildFile(File file) { + return new File(file, buildFile).exists(); + } + public static boolean isFromTestSource(String path) { return path.contains("test-sources") || path.contains("test-annotations"); } @@ -53,7 +63,7 @@ public class FileUtil { if (file.isFile()) { return getProjectRootPath(file.getParentFile(), --count); } else { - if (new File(file, "pom.xml").exists() && !new File(file.getParentFile(), "pom.xml").exists()) { + if (new File(file, buildFile).exists() && !new File(file.getParentFile(), buildFile).exists()) { return file.getAbsolutePath(); } else { return getProjectRootPath(file.getParentFile(), --count); @@ -61,4 +71,4 @@ public class FileUtil { } } -} \ No newline at end of file +}