Ich arbeite an einem auf mehreren Modulen basierenden Projekt, bei dem eines der Module einige Annotationsprozessoren für die benutzerdefinierten Annotationen enthält, die von anderen Modulen verwendet werden. Wenn ich einem anderen Modul eine Abhängigkeit des Annotationsprozessormoduls hinzufüge, werden die Annotationen dieser Module von diesen Annotationsprozessoren verarbeitet.Verwendung von benutzerdefinierten Annotationsprozessoren neben Checker Framework
Aber kürzlich integrierte ich Checker Framework (für Typ Anmerkungen) und dann alle benutzerdefinierten Annotationsprozessoren (ich oben erwähnt) funktioniert nicht mehr. Irgendeine Idee, wie man sie mit Checker Framework zur Arbeit bringt, wird sehr geschätzt?
das Szenario löschen,
Lassen Sie uns sagen, dass ich ein Maven-Modul mit dem Namen module_A. In diesem Modul habe ich eine Annotation (Klassenstufe) namens "@FoodItem". Ich muss eine Regel erzwingen, dass jede mit "@FoodItem" Annotation versehene Klasse die Schnittstelle "Food" implementiert. Also habe ich einen Annotationsprozessor "FoodItemAnnotationProcessor" im selben Modul (Modul_A) geschrieben, der solche Klassen verarbeitet und auf die Einhaltung dieser Regel prüft.
Dann sagen wir, ich habe ein anderes Modul mit dem Namen module_B, das eine maven-Abhängigkeit zu dem Modul_A hat. In diesem Modul habe ich eine Klasse namens "Pizza", die mit Annotation "@FoodItem" versehen ist.
Wenn das Projekt (das hat modul_A und module_B) mit der obigen Konfiguration erstellt wird, wird der "FoodItemAnnotationProcessor" beim Kompilieren ausgeführt und validiert die Klasse "Pizza" für die oben genannte Regel.
Danach habe ich Checker-Framework zu module_B integriert (wie erwähnt here). Dann werden Checker-Framework-bezogene Validierungen zur Kompilierzeit wie erwartet ausgeführt, aber der "FoodItemAnnotationProcessor" hat aufgehört zu arbeiten.
Können Sie mehr Details über Ihre Einrichtung oder (vorzugsweise!) Ein minimales Arbeitsbeispiel geben? – mernst
Eine Beschreibung des Szenarios –
hinzugefügt Schritt 3 der Anweisungen, auf die Sie verwiesen haben, enthalten ein Code-Snippet mit dem Kommentar ''. Haben Sie FoodItemAnnotationProcessor dort aufgenommen? – mernst