diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java index 3ff75b5..b32349b 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java @@ -117,6 +117,8 @@ public class AutoMapperProcessor extends AbstractProcessor { private final Set mapperSet = new HashSet<>(); + private static final Map AUTO_MAPPER_INDEX = new HashMap<>(); + private Messager messager; public AutoMapperProcessor() { @@ -517,10 +519,21 @@ public class AutoMapperProcessor extends AbstractProcessor { mapperList.addAll(reverseMapperMetadataList); + mapperList.removeIf(metadata -> !metadata.isConvertGenerate()); + + // 兼容同模块下,同名不同包的场景 mapperList.forEach(metadata -> { - if (!metadata.isConvertGenerate()) { - return; + String mapperName = metadata.mapperName(); + // 同名类时,增加后缀 + Integer index = AUTO_MAPPER_INDEX.getOrDefault(mapperName, 0); + if (index > 0) { + mapperName = mapperName + "__" + index; } + AUTO_MAPPER_INDEX.put(metadata.mapperName(), ++index); + metadata.setMapperName(mapperName); + }); + + mapperList.forEach(metadata -> { this.writeAutoMapperClassFile(metadata); addAdapterMethod(metadata); }); diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/AutoMapperGenerator.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/AutoMapperGenerator.java index 23b0db3..f53bb48 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/AutoMapperGenerator.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/generator/AutoMapperGenerator.java @@ -32,22 +32,9 @@ public class AutoMapperGenerator { public static final String CONVERT_METHOD_NAME = "convert"; - private static final Map AUTO_MAPPER_INDEX = new HashMap<>(); - public void write(AutoMapperMetadata metadata, ProcessingEnvironment processingEnv) { String mapperPackage = metadata.mapperPackage(); - - /* - 当前处理方式,本地使用 IDEA 开发时,当修改 Source/Target 类时,可能还会出现类名冲突的问题, - 当出现该问题时,需要执行 clean 把之前构建的类清掉。 - */ String mapperName = metadata.mapperName(); - // 同名类时,增加后缀 - Integer index = AUTO_MAPPER_INDEX.getOrDefault(mapperName, 0); - if (index > 0) { - mapperName = mapperName + "__" + index; - } - AUTO_MAPPER_INDEX.put(metadata.mapperName(), ++index); try (final Writer writer = processingEnv.getFiler() .createSourceFile(mapperPackage + "." + mapperName)