#java #gradle #build.gradle #aspectj
#java #gradle #build.gradle #aspectj
Вопрос:
У меня есть многомодульная настройка для проекта 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{}
?
Ответ №1:
Я могу решить проблему. По сути, в моем корневом проекте нет исходного кода (это просто родительский контейнер модуля Gradle), поэтому его необходимо исключить из sourceRoots
sourceroots{
sourceSets.main.java.srcDirs.each{
if(!it.absolutePath.contains("/src/main/java")) {
pathelement(location: it.absolutePath)
}
}