2016-08-06 46 views
1

我完全被编译错误package sg.ncl.service.authentication.data.jpa does not exist愚蠢,应该不会发生。Gradle多项目构建命令失败,但对于子项目正常工作

我有一个Gradle多项目,我试图更新到Spring Boot 1.4.0。 存储库位于https://github.com/nus-ncl/services-in-one/tree/DEV-483

更新:1: 每当我使用任何下列命令:

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

它们会导致以下错误。

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 

但是当我使用下列任何命令时,编译错误不会发生。

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

更新2:有趣的是,如果我使用./gradlew :service-registration:build build,没有错误。

我意识到我无法想出一个简单的例子,并为造成的不便表示歉意。不过,如果能够解决这个问题,我将不胜感激。

回答

4

从引导1.4开始,可执行jar文件将编译后的类存储在BOOT-INF/classes中。这意味着只需将jar添加到类路径中就无法访问它们。您将模块打包为可执行的jar文件,并试图将其作为依赖项使用。当你使用它作为依赖时,它的jar被添加到类路径中。如果jar已经被重新打包成一个可执行文档,它的类就不可见,编译失败。

最简单的变化是禁用项目的罐子重新包装:

bootRepackage { 
    enabled = false 
} 
+1

谢谢。但是,而不是禁用'bootRepackage'。我删除了'apply plugin:'spring-boot''到子项目。 – ChristopherZ

相关问题