小编Vea*_*KII的帖子

Delombok使用Gradle

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

这样做的一个问题是我们使用Lombok注释并且SonarQube没有很好地处理它 - 我们的代码需要'delombok'ed.

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

这可以在gradle中完成(见这里).

好吧,部分.通常,Ant任务可用于delombok源.代码示例如下: -

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)
        }
    }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,我相信我需要一个预配置的蚂蚁系统(我还没有让它工作).

另一种方法是使用Maven lombok:delombok插件(见这里).但是我不知道如何做到这一点,如果这还需要预先配置的环境.

我不确定哪种方法最好.不需要预先配置的构建系统并且可以从gradle/gradlew完全工作的方法将是优选的.

最终目标是进行"delombok"项目任务,基本上执行以下操作:

java -jar lombok.jar …
Run Code Online (Sandbox Code Playgroud)

gradle lombok

16
推荐指数
2
解决办法
5241
查看次数

Gradle Manifest.MF

我要做的是将我项目中预先创建的manifest.mf文件与gradle中jar任务的动态创建的清单文件结合起来.

有没有办法做到这一点?目前我完全生成我的清单文件: -

jar.doFirst {
    manifest {
        def requiredProjects = ''
        configurations.compile.getAllDependencies().withType(ProjectDependency).each {dep->
            def dependantProjects = dep.getDependencyProject()
            def projects = project(dependantProjects.path).libsDir.list().findAll{it.endsWith('.jar')}
            projects.removeAll(projects.findAll{it.endsWith('test.jar')})
            def requiredProject = projects.join(' ')
            requiredProjects +=  requiredProject.replaceAll(/ /,'%20') + ' '
            logger.info 'Required Project: ' + requiredProject
        }
        logger.info 'Required requiredProjects: ' + requiredProjects

        def compileFiles = configurations.compile.files{ it instanceof ExternalDependency }.collect  {
            File file = it
            "lib/${file.name}"
        }.join(' ')

        def manifestPath = requiredProjects + compileFiles
        logger.info 'Manifest: '+ manifestPath
        attributes 'Class-Path': manifestPath
        attributes 'Build-date': new Date(); …
Run Code Online (Sandbox Code Playgroud)

manifest gradle

6
推荐指数
1
解决办法
4803
查看次数

标签 统计

gradle ×2

lombok ×1

manifest ×1