重写gradle代码以兼容5.1

vnjpjtjt  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(88)

我一直在尝试重新编写一些代码以兼容Gradle 5.1。我现在用的是4.10下面的代码块是我复制的(大部分),所以老实说,我不是100%确定它的作用,对gradle来说还是相当新的。下面是代码

doLast{
        ant.taskdef( resource:"org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties", classpath: configurations.ajc.asPath)
        ant.iajc(
            source: sourceCompatibility,
            target: targetCompatibility,
            Xlint: "ignore",
            destDir: sourceSets.main.output.classesDir.absolutePath, 
            maxmem: "1024m",
            fork: "true",
            aspectPath: configurations.aspects.asPath,
            sourceRootCopyFilter: "**/.svn/*,**/*.java",
            classpath: configurations.compile.asPath
        ){
            sourceroots{
                sourceSets.main.java.srcDirs.each{
                    pathelement(location:it.absolutePath)
                }
            }
        }
    }

有问题的代码如下

destDir: sourceSets.main.output.classesDir.absolutePath,

因为它抛出以下错误
未能获取org.gradle.api.internal.tasks.DefaultSourceSetOutput类型的主类的未知属性“classesDir”。
将代码更改为

destDir: sourceSets.main.output.classesDirs.absolutePath,

导致以下错误
无此类属性:类的absolutePath:org.gradle.API.internal.file.collections. DefaultFileCollection
所以我正在寻找替代方案(或语法更新)

tyu7yeag

tyu7yeag1#

似乎我通过改变以下内容来修复它

destDir: "build/classes",

一切似乎都在按预期进行

tyu7yeag

tyu7yeag2#

对于Gradle 8.2,请使用以下命令:

sourceSets.main.java.classesDirectory.get()

相关问题