问题描述
我为具有以下结构的Java项目设置了多模块。
mainApp
|--> core-module
| |--> src
| |--> build.gradle
|
|--> lib-module
| |--> src
| |--> build.gradle
|--> lib-another-module
| |--> src
| |--> build.gradle
|
|--> settings.gradle
|--> build.gradle
|--> gradle.properties
在我提到的mainApp/build.gradle
中
compileJava {
//dependsOn configurations.ajc.getTaskDependencyFromProjectDependency(true,"compileJava")
doLast{
ant.taskdef( resource:"org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties",classpath: configurations.ajc.asPath)
ant.iajc(
maxmem: "1024m",fork: "true",Xlint: "ignore",destDir: sourceSets.main.output.classesDirs.asPath,aspectPath: configurations.aspects.asPath,sourceRootCopyFilter: "**/.svn/*,**/*.java",classpath: configurations.compile.asPath,source: project.sourceCompatibility,target: project.targetCompatibility
){
sourceroots{
sourceSets.main.java.srcDirs.each{
pathelement(location:it.absolutePath)
}
}
}
}
}
我收到[ant:iajc] [error] build config error: bad sourceroot: /Users/abcd/mainApp/src/main/java
的错误消息
如何将sub-module
src指向sourceroots{}
?
解决方法
我可以解决问题。基本上我的根项目没有任何源代码(它只是父Gradle模块容器),因此需要从sourceRoots
sourceroots{
sourceSets.main.java.srcDirs.each{
if(!it.absolutePath.contains("/src/main/java")) {
pathelement(location: it.absolutePath)
}
}