我有一个包含两个模块的 intellij 项目:
web-services
(我的 API),library-services
(业务逻辑)。
网络服务的build.gradle:
apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'maven-publish'
apply from: ext.gradleDir + '/common.gradle'
apply from: ext.gradleDir + '/integration_test.gradle'
sourceCompatibility = 1.8
targetCompatibility = 1.8
project.version = '1.0.' + getBuildNumber()
dependencies {
compile project(':library-services')
compile('com.waze.automation:common:1.0.80')
compile('com.sun.jersey:jersey-bundle:1.19')
compile('com.sun.jersey:jersey-json:1.19')
compile group: 'org.codehaus.jackson', name:'jackson-jaxrs', version: '1.1.1'
compile('com.google.guava:guava:18.0')
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile('org.hamcrest:hamcrest-all:1.3')
testCompile('org.mockito:mockito-all:1.9.5')
}
war {
from 'src/main' // include source files in war
}
我运行这个 gradle 命令:
~/workspaceQa/MobileAutomationWebService/web-services ⮀
❯ ./gradlew war
但是在创建的 war 中我没有看到图书馆服务的类
我的服务抛出 ClassNoFound
异常。
这是我的日志的一部分。我该如何解决这个问题?
12:10:28.081 [INFO] [org.gradle.BuildLogger] Tasks to be executed: [task ':library-services:compileJava', task ':library-services:processResources', task ':library-services:verifyDependencies', task ':library-services:classes', task ':library-services:setProjectVersion', task ':library-services:jar', task ':web-services:compileJava', task ':web-services:processResources', task ':web-services:verifyDependencies', task ':web-services:classes', task ':web-services:war']
最佳答案
这是我注意到的一个奇怪的 gradle IntelliJ 行为。可能只是 gradle,但我通常不在 IntelliJ 之外使用 gradle。所以,我不能肯定地说。 在任何情况下,当我包含的源集模块在我包含它的模块的名称之后有一个按字母顺序排列的名称时。WAR 缺少包含模块中的类。不知道是什么原因造成的,但我在包含的模块的开头加上了下划线,它包含了类。 这不是一个理想的解决方案,但对我有用,因为我有一个包含在我的 API 模块中的核心源集。它花了一段时间才成为我的问题,因为我的核心模块称为 api-core。在我添加“Activity ”API 模块之前一切正常。 在不知 Prop 体机制是什么的情况下,我总是不愿意发布这种变通解决方案。我希望它有所帮助,如果有人知道根本原因是什么并且有更好的解决方案。洗耳恭听。 :)
关于java - 运行 gradle "war"不包括依赖的 intellij 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38072518/