@@ -107,11 +107,35 @@ public static ClassLoader annotationProcess(List<Class<?>> targetClasses, Proces
107107 return annotationProcessFiles (files , processors );
108108 }
109109
110+ public static ClassLoader annotationProcess (List <Class <?>> targetClasses , List <Processor > processors ) throws Exception {
111+ var files = targetClasses .stream ()
112+ .map (targetClass -> {
113+ var targetFile = targetClass .getName ().replace ('.' , '/' ) + ".java" ;
114+ var root = "src/test/java/" ;
115+ return root + targetFile ;
116+ })
117+ .toList ();
118+
119+ return annotationProcessFiles (files , true , processors );
120+ }
121+
110122 public static ClassLoader annotationProcessFiles (List <String > targetFiles , Processor ... processors ) throws Exception {
111123 return annotationProcessFiles (targetFiles , true , processors );
112124 }
113125
114- public static ClassLoader annotationProcessFiles (List <String > targetFiles , boolean clearClasses , Processor ... processors ) throws Exception {
126+ public static ClassLoader annotationProcessFiles (List <String > targetFiles , boolean clearClasses , Processor ... processors ) throws Exception {
127+ return annotationProcessFiles (targetFiles , clearClasses , List .of (processors ));
128+ }
129+
130+ public static ClassLoader annotationProcessFiles (List <String > targetFiles , boolean clearClasses , List <Processor > processors ) throws Exception {
131+ return annotationProcessFiles (targetFiles , List .of (), clearClasses , processors );
132+ }
133+
134+ public static ClassLoader annotationProcessFiles (List <String > targetFiles , List <String > targetClasses , boolean clearClasses , List <Processor > processors ) throws Exception {
135+ return annotationProcessFiles (targetFiles , targetClasses , clearClasses , p -> true , processors );
136+ }
137+
138+ public static ClassLoader annotationProcessFiles (List <String > targetFiles , List <String > targetClasses , boolean clearClasses , Predicate <Path > clearClassesPredicate , List <Processor > processors ) throws Exception {
115139 var compiler = ToolProvider .getSystemJavaCompiler ();
116140 var out = new StringWriter ();
117141 var diagnostics = new ArrayList <Diagnostic <? extends JavaFileObject >>();
@@ -126,7 +150,7 @@ public static ClassLoader annotationProcessFiles(List<String> targetFiles, boole
126150 if (clearClasses ) {
127151 try (var s = Files .walk (outClasses )) {
128152 s .forEach (p -> {
129- if (!Files .isDirectory (p )) {
153+ if (!Files .isDirectory (p ) && clearClassesPredicate . test ( p ) ) {
130154 try {
131155 Files .delete (p );
132156 } catch (IOException e ) {
@@ -157,8 +181,8 @@ public static ClassLoader annotationProcessFiles(List<String> targetFiles, boole
157181 cp .add (outClasses );
158182 standardFileManager .setLocationFromPaths (StandardLocation .CLASS_PATH , cp );
159183
160- var task = compiler .getTask (out , standardFileManager , l , List .of ("-parameters" , "-g" , "--enable-preview" , "--source" , "17" , "-XprintRounds" ), List . of () , inputSourceFiles );
161- task .setProcessors (List . of ( processors ) );
184+ var task = compiler .getTask (out , standardFileManager , l , List .of ("-parameters" , "-g" , "--enable-preview" , "--source" , "17" , "-XprintRounds" ), targetClasses , inputSourceFiles );
185+ task .setProcessors (processors );
162186 try {
163187 task .call ();
164188 if (diagnostics .stream ().noneMatch (d -> d .getKind () == Diagnostic .Kind .ERROR )) {
0 commit comments