不同的任务不能有不同的系统属性值

杰诺

我正在尝试创建 2 个任务来执行声纳立方体任务。我希望能够根据任务指定不同的属性

   task sonarqubePullRequest(type: Test){

        System.setProperty( "sonar.projectName", "sonarqubePullRequest")
        System.setProperty("sonar.projectKey", "sonarqubePullRequest")
        System.setProperty("sonar.projectVersion", serviceVersion)
        System.setProperty("sonar.jacoco.reportPath", 
        "${project.buildDir}/jacoco/test.exec")

        tasks.sonarqube.execute()
    }


task sonarqubeFullScan(type: Test){
    System.setProperty("sonar.projectName", "sonarqubeFullScan")
    System.setProperty("sonar.projectKey", "sonarqubeFullScan")
    System.setProperty("sonar.projectVersion", serviceVersion)
    System.setProperty("sonar.jacoco.reportPath", 
    "${project.buildDir}/jacoco/test.exec")
    tasks.sonarqube.execute()
}

任务有效,但我设置的属性似乎存在问题

如果我运行第一个任务 sonarqubePullRequest 那么一切都很好,但是如果运行 sonarqubeFullScan 那么如果使用 sonarqubePullRequest 中指定的值。所以项目名称设置为 sonarqubePullRequest

就好像这些属性是在运行时设置的,无法更新。我觉得我错过了一些明显的东西,任何收到的建议都很明显。

卢卡斯·科尔弗

首先:永远不要execute()在任务上使用该方法不是公共 Gradle API 的一部分,因此,其行为可以更改或未定义。Gradle 将自行执行任务,因为您指定了它们(命令行或settings.gradle)或作为任务依赖项。

您的代码不起作用的原因是配置阶段执行阶段之间的差异配置阶段,任务闭包中的所有(配置)代码都被执行,但不执行任务。因此,您将始终覆盖系统属性。执行阶段只执行(内部)任务操作doFirstdoLast闭包请注意,每个任务在构建中仅执行一次,因此您将任务参数化两次的方法将永远行不通。

另外,我不明白您为什么使用系统属性来配置您的sonarqube任务。您可以通过以下方式直接配置任务:

sonarqube {
    properties {
        property 'sonar.projectName', 'sonarqubePullRequest'
        // ...
    }
}

现在您可以配置sonarqube任务。为了区分您的两种情况,您可以为不同的属性值添加条件。下一个示例使用项目属性作为条件:

sonarqube {
    properties {
        // Same value for both cases
        property 'sonar.projectVersion', serviceVersion
        // Value based on condition
        if (project.findProperty('fullScan') {
            property 'sonar.projectName', 'sonarqubeFullScan'
        } else {
            property 'sonar.projectName', 'sonarqubePullRequest'
        }
    }
}

或者,您可以添加另一个类型的任务SonarQubeTask这样,您可以对这两个任务进行不同的参数化,并在需要时调用它们(通过命令行或依赖项):

sonarqube {
    // Generated by the plugin, parametrize like described above
}

task sonarqubeFull(type: org.sonarqube.gradle.SonarQubeTask) {
    // Generated by your build script, parametrize in the same way
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么cpu频率在Win10任务管理器和系统属性中显示不同?

来自分类Dev

PATH环境变量的cmd和系统属性不同

来自分类Dev

定义gradle任务,以运行具有特定系统属性的任务

来自分类Dev

为部署在码头上的两个应用程序设置不同的Java系统属性

来自分类Dev

为什么系统属性显示两个不同的频率?

来自分类Dev

弹簧值注入-如果没有env变量,则默认为文件的系统属性

来自分类Dev

弹簧值注入-如果没有env变量,则默认为文件中的系统属性

来自分类Dev

Android系统属性

来自分类Dev

系统属性管理

来自分类Dev

Android系统属性

来自分类Dev

不同Linux发行版上的python系统属性“ __file__”不一致

来自分类Dev

切换类时,不能使用具有不同值的相同CSS属性

来自分类Dev

这些功能有何不同?

来自分类Dev

不同元素中相同属性的XML值不能重复

来自分类Dev

如何查找所有Maven系统属性

来自分类Dev

在不同的位置是否可能有不同的触摸目标?

来自分类Dev

Eclipse中的RoboLectric和Android(警告:ro.build.date.utc没有系统属性值)

来自分类Dev

Spark 如何解析字符串中的系统属性(没有字符串插值)?

来自分类Dev

RenderScript:支持库中不能有两个具有不同SDK版本的上下文

来自分类Dev

当ID可能有多个值时,如何选择不同的ID

来自分类Dev

当ID可能有多个值时,我该如何选择不同的ID

来自分类Dev

Wildfly加载系统属性

来自分类Dev

C#重载的构造函数仅在使用参数修饰符时不能有所不同

来自分类Dev

是否可以为Gradle测试任务动态配置系统属性?

来自分类Dev

如何在IntelliJ IDEA 13 gradle任务中设置系统属性?

来自分类Dev

是否可以为Gradle测试任务动态配置系统属性?

来自分类Dev

当给定某些系统属性时,如何配置 SBT 以跳过 proguard 任务。

来自分类Dev

如何仅在执行任务时才需要系统属性?

来自分类Dev

为什么我不能将系统属性传递给Windows上的Elasticsearch

Related 相关文章

  1. 1

    为什么cpu频率在Win10任务管理器和系统属性中显示不同?

  2. 2

    PATH环境变量的cmd和系统属性不同

  3. 3

    定义gradle任务,以运行具有特定系统属性的任务

  4. 4

    为部署在码头上的两个应用程序设置不同的Java系统属性

  5. 5

    为什么系统属性显示两个不同的频率?

  6. 6

    弹簧值注入-如果没有env变量,则默认为文件的系统属性

  7. 7

    弹簧值注入-如果没有env变量,则默认为文件中的系统属性

  8. 8

    Android系统属性

  9. 9

    系统属性管理

  10. 10

    Android系统属性

  11. 11

    不同Linux发行版上的python系统属性“ __file__”不一致

  12. 12

    切换类时,不能使用具有不同值的相同CSS属性

  13. 13

    这些功能有何不同?

  14. 14

    不同元素中相同属性的XML值不能重复

  15. 15

    如何查找所有Maven系统属性

  16. 16

    在不同的位置是否可能有不同的触摸目标?

  17. 17

    Eclipse中的RoboLectric和Android(警告:ro.build.date.utc没有系统属性值)

  18. 18

    Spark 如何解析字符串中的系统属性(没有字符串插值)?

  19. 19

    RenderScript:支持库中不能有两个具有不同SDK版本的上下文

  20. 20

    当ID可能有多个值时,如何选择不同的ID

  21. 21

    当ID可能有多个值时,我该如何选择不同的ID

  22. 22

    Wildfly加载系统属性

  23. 23

    C#重载的构造函数仅在使用参数修饰符时不能有所不同

  24. 24

    是否可以为Gradle测试任务动态配置系统属性?

  25. 25

    如何在IntelliJ IDEA 13 gradle任务中设置系统属性?

  26. 26

    是否可以为Gradle测试任务动态配置系统属性?

  27. 27

    当给定某些系统属性时,如何配置 SBT 以跳过 proguard 任务。

  28. 28

    如何仅在执行任务时才需要系统属性?

  29. 29

    为什么我不能将系统属性传递给Windows上的Elasticsearch

热门标签

归档