Ich habe kürzlich herausgefunden, dass das lombok.jar in unserem endgültigen Artefakt endet, was nicht nötig sein sollte. In meinem Verständnis ist Lombok nur Kompilierzeit.
%Vor%Aber wenn ich es auf den bereitgestellten Bereich einstelle, bekomme ich merkwürdiges Verhalten in Komponententests. Sie stürzen mit ClassNotFoundExceptions ab, wenn Sie versuchen,
aufzulösen %Vor%Welcher Maven Scope wird im Allgemeinen für Lombok verwendet?
Ich benutze Oracle JDK Build 1.8.0_25-b17 auf MacOSX 10.9
Lombok sollte im Bereich provided
verwendet werden (siehe offizielle Dokumente ).
Der Grund (wie in den Kommentaren angegeben wurde) ist, dass Lombok ein Kompilierzeit-Tool ist. Das heißt, es wird zur Laufzeit nicht benötigt . Wenn Sie den Gültigkeitsbereich provided
angeben, stellen Sie die Lombok-Bibliotheken dem Compiler zur Verfügung, aber es ist nicht eine Abhängigkeit von Ihrem kompilierten Jar. Daher hängt Ihr endgültiges JAR nicht von Lombok ab und muss nicht in eine Bereitstellung einbezogen werden, wodurch die Abhängigkeiten und die Größe Ihrer Bereitstellungen reduziert werden.
Normalerweise compile
. provided
steht für JAR-Dateien, die normalerweise mit dem Anwendungsserver geliefert werden, auf dem die Anwendung gehostet wird. Wenn Sie das JAR nicht in der endgültigen Anwendung haben wollen, ist es vielleicht am besten, das Maven-Plugin und nicht das JAR direkt zu verwenden: Ссылка