From f9049765f4f5f4229972b5068162402f38cb82d3 Mon Sep 17 00:00:00 2001 From: Suomm <1474983351@qq.com> Date: Wed, 12 Jul 2023 10:23:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=85=BC=E5=AE=B9=20gradle=20=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/config/MybatisFlexConfig.java | 24 +++++++++++++++---- .../mybatisflex/processor/util/FileUtil.java | 14 +++++++++-- 2 files changed, 31 insertions(+), 7 deletions(-) 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 +}