2016-08-06 9 views
1

Ich bin völlig durch einen Kompilierungsfehler package sg.ncl.service.authentication.data.jpa does not exist verunstaltet, die nicht passieren sollte.Gradle Multi-Projekt-Build-Befehl schlägt fehl, aber funktioniert ordnungsgemäß für Unterprojekte

Ich habe ein Gradle-Multiprojekt, das ich auf Spring Boot 1.4.0 zu aktualisieren versuche. Das Repository befindet sich unter https://github.com/nus-ncl/services-in-one/tree/DEV-483.

Update: 1: Jedes Mal, wenn ich einer der folgenden Befehle:

./gradlew clean build 
./gradlew clean assemble check 
./gradlew clean assemble test 

Sie in den folgenden Fehlern führen würden.

D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\logic\RegistrationServiceTest.java:16: error: package sg.ncl.service.authentication.data.jpa does not exist 
import sg.ncl.service.authentication.data.jpa.CredentialsEntity; 
             ^
D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\Util.java:4: error: package sg.ncl.service.authentication.data.jpa does not exist 
import sg.ncl.service.authentication.data.jpa.CredentialsEntity; 
             ^
D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\Util.java:120: error: cannot find symbol 
    public static CredentialsEntity getCredentialsEntity() { 
      ^
    symbol: class CredentialsEntity 
    location: class Util 
D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\Util.java:127: error: cannot find symbol 
    public static CredentialsEntity getInvalidCredentialsEntity() { 
      ^
    symbol: class CredentialsEntity 
    location: class Util 
D:\git\services-in-one\service-registration\src\test\java\sg\ncl\service\registration\web\RegistrationControllerTest.java:22: error: package sg.ncl.service.authentication.data.jpa does not exist 
import sg.ncl.service.authentication.data.jpa.CredentialsEntity; 
             ^
5 errors 
:service-registration:compileTestJava FAILED 

Wenn ich jedoch einen der folgenden Befehle verwende, tritt der Kompilierungsfehler nicht auf.

./gradlew clean :service-registration:build 
./gradlew clean :service-registration:compileTestJava 
./gradlew clean compileTestJava 
./gradlew clean check 

Update 2: Interessanterweise, wenn ich ./gradlew :service-registration:build build verwenden, gibt es keine Fehler.

Ich weiß, dass ich nicht in der Lage bin, ein vereinfachtes Beispiel zu finden und entschuldige mich für die Unannehmlichkeiten. Ich wäre jedoch dankbar für jede Hilfe, die ich zu diesem Problem bekommen kann.

Antwort

4

Ab Boot 1.4 speichern ausführbare JAR-Dateien kompilierte Klassen in BOOT-INF/classes. Dies bedeutet, dass sie nicht zugänglich sind, wenn einfach das Glas zum Klassenpfad hinzugefügt wird. Sie packen Ihr Modul als ausführbare JAR-Datei und versuchen es auch als Abhängigkeit zu verwenden. Wenn Sie es als Abhängigkeit verwenden, wird sein Jar dem Klassenpfad hinzugefügt. Wenn das Jar in ein ausführbares Archiv umgepackt wurde, sind seine Klassen nicht sichtbar und der Kompilierungsfehler tritt auf.

Die einfachste Änderung ist das Umpacken Ihres Projekts jar zu deaktivieren:

bootRepackage { 
    enabled = false 
} 
+1

Danke. Anstatt "bootRepackage" zu deaktivieren. Ich habe das 'apply plugin: 'Spring-Boot' zu den Unterprojekten entfernt. – ChristopherZ

Verwandte Themen