Maven Umfang für Lombok (Kompilieren vs. Bereitgestellt)

10

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

    
mkraemerx 01.04.2015, 08:16
quelle

2 Antworten

26

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.

    
agentgonzo 19.07.2016 09:11
quelle
5

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: Ссылка

    
EmirCalabuch 01.04.2015 08:19
quelle

Tags und Links