gpt4 book ai didi

gradle - Delombok使用Gradle

转载 作者:行者123 更新时间:2023-12-03 14:56:28 29 4
gpt4 key购买 nike

作为构建过程的一部分,我们使用SonarQube分析源代码。

这样做的一个问题是,我们使用了Lombok批注,而SonarQube无法很好地处理这一问题-我们的代码需要进行“delombok”处理。

Delomboked源删除了注释,并将源文件替换为编译器使用的最终代码。

这可以在gradle中完成(请参阅here)。

好吧,部分。通常,可以使用Ant任务来分发源代码。下面的代码示例:

task delombok {
// delombok task may depend on other projects already being compiled
dependsOn configurations.compile.getTaskDependencyFromProjectDependency(true, "compileJava")

// Set up incremental build, must be made in the configuration phase (not doLast)
inputs.files file(srcJava)
outputs.dir file(srcDelomboked)

doLast {
FileCollection collection = files(configurations.compile)
FileCollection sumTree = collection + fileTree(dir: 'bin')

ant.taskdef(name: 'delombok', classname: 'lombok.delombok.ant.DelombokTask', classpath: configurations.compile.asPath)
ant.delombok(from:srcJava, to:srcDelomboked, classpath: sumTree.asPath)
}
}

我遇到的问题是,我相信我需要一个预先配置的ant系统(我尚未使它工作)。

另一种方法是使用Maven lombok:delombok插件(请参阅 here)。但是,我不知道如何执行此操作,以及是否还需要预先配置的环境。

我不确定哪种方法最好。不需要预先配置的构建系统并且可以从gradle / gradlew完全运行的方法将是可取的。

最终目的是要有一个“delombok”项目任务,该任务基本上将执行以下任务:
java -jar lombok.jar delombok src -d src-delomboked

编辑

因此,我几乎可以通过以下代码片段来使用它:-
dependencies {
compile 'org.projectlombok:lombok:1.14.2'
}

task delombok {
description 'Delomboks the entire source code tree'
def srcDelomboked = 'build/src-delomboked'
def srcJava = 'src'

inputs.files file( srcJava )
outputs.dir file( srcDelomboked )

doLast {
def collection = files( configurations.compile + configurations.testCompile )
def sumTree = collection + fileTree( dir: 'bin' )

ant.taskdef( name: 'delombok', classname: 'lombok.delombok.ant.DelombokTask',
classpath: configurations.compile.asPath +
configurations.testCompile.asPath )
ant.delombok( from:srcJava, to:srcDelomboked, classpath: sumTree.asPath )


// Replace current src directory with delomboked source
copy {
from srcDelomboked
into srcJava
}
}
}
  • 这第一位确保可以将 Lombok jar 用于抓取
    使用delombok ant任务。
  • 然后我们将源文件配置为
    使用。
  • 接下来,我们设置gradle以使用ant任务。
  • 最后,复制任务将整个源树替换为代码的分拆版本。显然,可以根据您的需要将其删除。
  • 最佳答案

    使用Ant任务很好。不需要“Ant预配置”。另外,您可以使用JavaExec任务像上一个代码片段一样调用delombok。 (JavaExec当前不支持-jar选项,因此您必须命名主类。)无法使用Gradle中的Maven插件(除了使用Exec任务执行Maven之外)。

    关于gradle - Delombok使用Gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24997441/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com