Gradle добавляет путь Src к субмодулю в ткацком аспектеj [ant: iajc] [ошибка] ошибка конфигурации сборки: ошибка sourceroot: /Users/abcd/MainApp/src/main /java

#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)
    }
}