Giter VIP home page Giter VIP logo

plugins's People

Contributors

codacy-badger avatar dependabot[bot] avatar fossabot avatar github-actions[bot] avatar gitter-badger avatar henry-hub avatar ihub-bot[bot] avatar step-security-bot avatar zhanghuabin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

plugins's Issues

建议重命名settings的include和includes

从英文看,一个是 原形 、一个是 单数,无法体现 包含一个包含多个 的含义。

建议改为 includePathincludePaths ,或者 includeProjectincludeProjects

可能.java-local.properties机制并不适合测试任务

Describe the bug

.java-local.properties机制貌似已经推广到了所有插件中,但是其在测试任务中的效果却貌似不是我们所期望的。

To Reproduce

  • cornucopia、ihub-plugin
  • verification_settings.gradle,参考 #27
  • 添加如下内容的.java-local.properties
debug=true
#server.port=22222
spring.boot.admin.client.url=http://192.168.8.104:8769
spring.boot.admin.client.username=cheche
spring.boot.admin.client.password=cheche365#
spring.config.name=rest,service
spring.datasource.username=cheche
spring.datasource.password=cheche
spring.datasource.url=jdbc:mysql://localhost:3306/sdas?useSSL=false&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
cornucopia.profile.default.storage.type=_EXTERNAL_SERVICE

  • 执行任务,参考 #27
  • 报DB拒绝连接错

Expected behavior

该项目功能测试无需连接写在.java-local.properties的MySQL,spring.datasource.url在本项目功能测试时不应生效。
至于改进方案,我也没想清楚,毕竟从 Test 插件中彻底移除.java-local.properties机制,好像也不是个好主意。
那么提供一个 是否启用该机制的开关 如何?由于所有插件都有该机制,但是不同插件默认是否开启该机制却有不同,比如 Boot 插件默认应该开启,而 Test 插件则正相反。

Test、Boot插件的skippedPropNames机制还是有价值的

Proplem Description

verification_settings.gradle,第13行添加的配置,我是在试错了很多次才找到的,可能还不全。
因为使用了各个支持include/excludePropNames机制的插件的用户,可能都很难记清runtime所需的参数名全集。

Solution

所以维护一个include可能并不现实,至少对cornucopia项目而言,如果 Test 插件同时提供exclude机制的话,我就只需简单地把endirs属性排除掉、其他属性都要就行了。

调整一下.spring-boot-local.properties文件的支持方式

现在这个属性仅对 bootRun 有效,但是可以把它改造成其他一些Task也能支持的机制,比如 test

名字可以改成.java-local.properties,里面的都是Java属性。

但是这个文件的优先级要低于命令行中指定的同名-D参数。

有了.java-local.properties机制,就可以把类似于debug=truespring.profiles.active=dev这种高频属性写在文件里,个别Task的特殊需求则通过命令行指定-D参数来追加或者覆盖。

执行gradlew classes时报获取ihub-libs pom认证失败

最新的cornucopia,ihub-plugin分支,错误如下:

Received status code 401 from server: Unauthorized
17:57:35: Executing task 'classes'...

┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                       Gradle Plugin Repos                                        │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Gradle Central Plugin Repository                                                                 │
│ flatDir(E:\r\pub-apps\cornucopia\gradle\plugins)                                                 │
│ AliYunGradlePlugin(https://maven.aliyun.com/repository/gradle-plugin)                            │
│ AliYunSpringPlugin(https://maven.aliyun.com/repository/spring-plugin)                            │
│ SpringRelease(https://repo.spring.io/release)                                                    │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
include project -> rest
include project -> sdk
include project -> service
include project -> test
Configuration on demand is an incubating feature.

> Configure project :
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                       Gradle Project Repos                                       │
├──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ AliYunPublic(https://maven.aliyun.com/repository/public)                                         │
│ AliYunGoogle(https://maven.aliyun.com/repository/google)                                         │
│ AliYunSpring(https://maven.aliyun.com/repository/spring)                                         │
│ SpringRelease(https://repo.spring.io/release)                                                    │
│ ReleaseRepo(http://192.168.1.251:8081/nexus/content/repositories/releases/)                      │
│ SnapshotRepo(http://192.168.1.251:8081/nexus/content/repositories/snapshots/)                    │
│ IHubRepo(https://maven.pkg.github.com/ihub-pub/*)                                                │
│ MavenRepo                                                                                        │
└──────────────────────────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                CORNUCOPIA Group Maven Bom Version                                │
├────────────────────────────────┬──────────────────────────────────────────┬──────────────────────┤
│ Group                          │ Module                                   │ Version              │
├────────────────────────────────┼──────────────────────────────────────────┼──────────────────────┤
│ pub.ihub.lib                   │ ihub-libs                                │ 1.0.0-SNAPSHOT       │
│ org.codehaus.groovy            │ groovy-bom                               │ 3.0.7                │
│ org.spockframework             │ spock-bom                                │ 2.0-M5-groovy-3.0    │
│ org.springframework.boot       │ spring-boot-dependencies                 │ 2.4.5                │
│ org.springframework.cloud      │ spring-cloud-dependencies                │ 2020.0.2             │
│ org.springframework.security   │ spring-security-bom                      │ 5.4.6                │
│ com.alibaba.cloud              │ spring-cloud-alibaba-dependencies        │ 2021.1               │
│ com.github.xiaoymin            │ knife4j-dependencies                     │ 3.0.2                │
│ com.sun.xml.bind               │ jaxb-bom-ext                             │ 3.0.0                │
│ de.codecentric                 │ spring-boot-admin-dependencies           │ 2.4.1                │
└────────────────────────────────┴──────────────────────────────────────────┴──────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                              CORNUCOPIA Group Maven Module Version                               │
├─────────────────────────────────────┬──────────────────────────────────────────┬─────────────────┤
│ Group                               │ Module                                   │ Version         │
├─────────────────────────────────────┼──────────────────────────────────────────┼─────────────────┤
│ org.codehaus.groovy                 │ groovy-all                               │ 3.0.7           │
│ org.projectlombok                   │ lombok                                   │ 1.18.20         │
│ com.alibaba                         │ fastjson                                 │ 1.2.76          │
│ com.alibaba                         │ druid                                    │ 1.2.6           │
│ com.alibaba                         │ druid-spring-boot-starter                │ 1.2.6           │
│ com.alibaba.p3c                     │ p3c-pmd                                  │ 2.1.1           │
│ javax.xml.bind                      │ jaxb-api                                 │ 2.3.1           │
│ com.baomidou                        │ mybatis-plus                             │ 3.4.2           │
│ com.baomidou                        │ mybatis-plus-boot-starter                │ 3.4.2           │
│ com.baomidou                        │ mybatis-plus-generator                   │ 3.4.2           │
│ com.github.xiaoymin                 │ knife4j-aggregation-spring-boot-starter  │ 2.0.8           │
│ com.athaydes                        │ spock-reports                            │ 2.0.1-RC3       │
└─────────────────────────────────────┴──────────────────────────────────────────┴─────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                              CORNUCOPIA Group Maven Default Version                              │
├─────────────────────────────────────────────────────────────────┬────────────────────────────────┤
│ Group                                                           │ Version                        │
├─────────────────────────────────────────────────────────────────┼────────────────────────────────┤
│ cn.hutool                                                       │ 5.6.3                          │
└─────────────────────────────────────────────────────────────────┴────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                 CORNUCOPIA Exclude Group Modules                                 │
├──────────────────────────────────────────┬───────────────────────────────────────────────────────┤
│ Group                                    │ Modules                                               │
├──────────────────────────────────────────┼───────────────────────────────────────────────────────┤
│ c3p0                                     │ c3p0                                                  │
│ commons-logging                          │ commons-logging                                       │
│ com.zaxxer                               │ HikariCP                                              │
│ log4j                                    │ log4j                                                 │
│ org.apache.logging.log4j                 │ log4j-core                                            │
│ org.apache.tomcat                        │ tomcat-jdbc                                           │
│ org.slf4j                                │ slf4j-jcl                                             │
│ org.slf4j                                │ slf4j-log4j12                                         │
│ stax                                     │ stax-api                                              │
└──────────────────────────────────────────┴───────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────────────────────────────────────┐
│                              CORNUCOPIA Config Default Dependencies                              │
├────────────────────────────────┬─────────────────────────────────────────────────────────────────┤
│ DependencyType                 │ Dependencies                                                    │
├────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
│ compileOnly                    │ cn.hutool:hutool-all                                            │
│ implementation                 │ org.slf4j:slf4j-api                                             │
│ runtimeOnly                    │ org.slf4j:jul-to-slf4j                                          │
│ runtimeOnly                    │ org.slf4j:jcl-over-slf4j                                        │
│ runtimeOnly                    │ org.slf4j:log4j-over-slf4j                                      │
└────────────────────────────────┴─────────────────────────────────────────────────────────────────┘
cornucopia-rest dependency groovy-all (only compile)
cornucopia-sdk dependency groovy-all (only compile)
cornucopia-service dependency groovy-all (only compile)
cornucopia-test dependency groovy-all (only compile)

> Task :cornucopia-service:compileJava NO-SOURCE
> Task :cornucopia-rest:processResources UP-TO-DATE
> Task :cornucopia-service:compileGroovy FAILED
2 actionable tasks: 1 executed, 1 up-to-date

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':cornucopia-service:compileGroovy'.
> Could not resolve all dependencies for configuration ':cornucopia-service:detachedConfiguration1'.
   > Could not resolve pub.ihub.lib:ihub-libs:1.0.0-SNAPSHOT.
     Required by:
         project :cornucopia-service
      > Could not resolve pub.ihub.lib:ihub-libs:1.0.0-SNAPSHOT.
         > Unable to load Maven meta-data from https://maven.pkg.github.com/ihub-pub/*/pub/ihub/lib/ihub-libs/1.0.0-SNAPSHOT/maven-metadata.xml.
            > Could not get resource 'https://maven.pkg.github.com/ihub-pub/*/pub/ihub/lib/ihub-libs/1.0.0-SNAPSHOT/maven-metadata.xml'.
               > Could not GET 'https://maven.pkg.github.com/ihub-pub/*/pub/ihub/lib/ihub-libs/1.0.0-SNAPSHOT/maven-metadata.xml'. Received status code 401 from server: Unauthorized

总报1.0.0-SNAPSHOT版本的pom访问失败,需要提升代码里写死的版本么?还是别的错?

ihub-test插件读取test.*属性有问题

Describe the bug

我指定了-Dtest.maxParallelForks=1,但是下图明显用上了所有核(16个)。
image

To Reproduce

最新 cornucopiaihub-plugin分支,执行下列命令行(小心CPU爆掉,直接飙到100%占用率,所以最好先本地把testMaxParallelForks改小点,如下图):
gradlew -Dspring.profiles.active=dev -Dspring.config.name=service,test -Ddebug=true -Dtest.maxParallelForks=1 -DjacocoPackageInstructionCoverageRuleEnabled=false -DjacocoBundleBranchCoveredRatio=0.2 -DjacocoBundleInstructionCoveredRatio=0.4 cleanTest test
image

Expected behavior

-Dtest.maxParallelForks=1意味着所有测试用例在一个进程里串行执行。

Lombok @Data Improve your Code Coverage

On my previous project we had a problem to achieve good code coverage with Jacoco. Lombok was used extensively on the project and each time we added new domain object we were loosing those precious code coverage percentages.

🐛 env和system属性读取存在问题

检查清单

受影响的软件包和版本

1.1.2

可运行的示例链接

No response

复现步骤

1.env某些情况取不到值,如下:
REPO_USERNAME: ***
REPO_PASSWORD: ***
SIGNING_KEY_ID: ***
SIGNING_PASSWORD: ***
SIGNING_SECRET_KEY: ***
2.同时使用env和system属性时system不是最优先;

预期行为

正常取到值

实际行为

取不到值

Java版本

No response

Gradle版本

No response

系统环境

No response

【需求】添加Jacoco Console Report

背景描述

Gradle的Jacoco插件默认仅提供三种报告,分别是XML、CSV和HTML。

而GitLab CICD过程中可以通过解析控制台输出的信息,得到各种类型语言的项目的测试覆盖率,然后通过特定URL显示在README中。

解决方案

参考最新的 cornucopiaihub-plugin 分支,其中的verification_settings.gradle中添加了一段代码。

这段代码可以打印每一个项目测试后的覆盖率报告。尽管有用,但是我们还是需要一个 总覆盖率 来提供CICD所用。

所以,这段代码的启发在于以下几点:

  • 可以得到各个项目各自的、分项的覆盖率

  • 各个项目的覆盖率是否可以集中保存

    这需要仔细研究一下Gradle执行任务的机制,看看有没有提供类似如下特征的机制:

    • 能钩住在各个项目上运行的、关注的任务

      用于记录各项目的分项覆盖率。

    • 能钩住整体的生命循环关键节点

      如此才有机会计算 总覆盖率

    • 能声明全局的、跨任务、跨项目的变量

      如果想透过static成员的思路来实现,那么必须考虑Gradle Daemon为true时的场景。

  • 总覆盖率的计算规则

    尽管我们最为关心分支覆盖率,那么直观做法就是把各个项目的分支覆盖率简单平均,从而得到 总覆盖率

    但是,上述其实是 分支总覆盖率,如果再彻底一点:首先将各项目的分项覆盖率简单平均,然后将各项目的简单平均值再做简单平均,得到另一种 总覆盖率

    上述两种计算方法仅是抛砖引玉,无论使用何种计算方式,最后输出的文本必须用容易被解析的特殊格式输出到控制台。

本需求可能需要比较长时间的思考、验证,可以作为一个重要但不优先的任务。

另外,在settings.gradle中,我添加了两个有类似能力的插件,但是被注释掉了,因为他们不兼容最新版本的Gradle,其中有一个插件比较活跃,可能会在短期内推出新版。

但是它们估计都只能打印分项覆盖率,而不能统计 总覆盖率 ,这个功能是本插件可以突破的亮点。

改造pub-apps/cornucopia时遇到的几个问题

项目分支:ihub-plugin

  • IntelliJ IDEA 刷新项目暂时没问题了,代价是
    • 插件 pub.ihub.plugin.ihub-groovy 不能用,暂时恢复引用groovy_settings.gradlegroovy_essential_deps.gradle作为替代方案
    • rest 项目不能写apply { plugin '...ihub-native' },否则报IHubVerificationPlugin的问题,以为是ihub-native的问题,但其实是 CodeNarc 配置找不到,照着代码的要求添加目录和文件后就可以了,但是错误提示可以改得再友好一些
  • 执行gradlew classes时报错
    • 总是试图从https://maven.pkg.github.com/ihub-pub这个需要授权的repo去解析公司组件 Pom 信息,所以必定401失败,建议参考default_deps.gradle14~34 行配置,修复IHubPluginsPlugin中的相关问题

【Bug】System Property整数类型参数转换问题

Describe the bug

通过-D传入的整数型参数,其字串转为整数时有问题,比如将字符2转换为整数50

To Reproduce

  1. cornacopia项目、ihub-plugins分支
  2. 执行test任务
  3. 添加-DiHubTest.maxParallelForks=2
  4. 实际值为50

Expected behavior
字符2应该转换为整数2

Additional context

可能有关的Groovy已修复Issue:GROOVY-8957

IHubTestExtension.runSkippedPropNames属性处理有问题

问题描述

#29 新增的runSkippedPropNames属性,使用时抛NPE。


重现步骤

  • 详见最新cornucopia的ihub-plugin分支

  • 手动打开verification_settings.gradle line 12

  • 手动关闭verification_settings.gradle line 13

  • 执行如下命令行

    gradlew -Dspring.profiles.active=dev -Dorg.gradle.daemon=true -Dspring.config.name=service,test -Ddebug=true -DiHubTestMaxParallelForks=1 -DjacocoPackageInstructionCoverageRuleEnabled=false -DjacocoBundleBranchCoveredRatio=0.2 -DjacocoBundleInstructionCoveredRatio=0.4

  • 异常栈如下所示

详细错误展开可见
A problem occurred configuring project ':cornucopia-rest'.
> java.lang.NullPointerException (no error message)

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':cornucopia-rest'.
	at org.gradle.configuration.project.LifecycleProjectEvaluator.wrapException(LifecycleProjectEvaluator.java:75)
	at org.gradle.configuration.project.LifecycleProjectEvaluator.addConfigurationFailure(LifecycleProjectEvaluator.java:68)
	at org.gradle.configuration.project.LifecycleProjectEvaluator.access$400(LifecycleProjectEvaluator.java:51)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:191)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:105)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:250)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:267)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:249)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:91)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:63)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:723)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:150)
	at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:41)
	at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:69)
	at org.gradle.execution.DefaultTaskSelector.getSelection(DefaultTaskSelector.java:97)
	at org.gradle.execution.DefaultTaskSelector.getSelection(DefaultTaskSelector.java:78)
	at org.gradle.execution.CompositeAwareTaskSelector.getSelection(CompositeAwareTaskSelector.java:93)
	at org.gradle.execution.commandline.CommandLineTaskParser.parseTasks(CommandLineTaskParser.java:43)
	at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:46)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:55)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:26)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:63)
	at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:45)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:55)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:26)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:63)
	at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:48)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:55)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.lambda$select$0(DefaultBuildConfigurationActionExecuter.java:42)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:141)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:128)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:40)
	at org.gradle.initialization.DefaultTaskExecutionPreparer.prepareForTaskExecution(DefaultTaskExecutionPreparer.java:38)
	at org.gradle.initialization.BuildOperationFiringTaskExecutionPreparer$CalculateTaskGraph.populateTaskGraph(BuildOperationFiringTaskExecutionPreparer.java:117)
	at org.gradle.initialization.BuildOperationFiringTaskExecutionPreparer$CalculateTaskGraph.run(BuildOperationFiringTaskExecutionPreparer.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.initialization.BuildOperationFiringTaskExecutionPreparer.prepareForTaskExecution(BuildOperationFiringTaskExecutionPreparer.java:56)
	at org.gradle.initialization.DefaultGradleLauncher.prepareTaskExecution(DefaultGradleLauncher.java:233)
	at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:168)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
	at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:125)
	at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:71)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
	at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:56)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:56)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:66)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:90)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$0(InProcessBuildActionExecuter.java:59)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:86)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:58)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.lambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:34)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:28)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:104)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:64)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:67)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: java.lang.NullPointerException
	at pub.ihub.plugin.IHubProjectExtension.systemProperties(IHubProjectExtension.groovy:99)
	at pub.ihub.plugin.IHubProjectExtension$systemProperties$6.call(Unknown Source)
	at pub.ihub.plugin.verification.IHubTestPlugin$_apply_closure2$_closure6.doCall(IHubTestPlugin.groovy:47)
	at jdk.internal.reflect.GeneratedMethodAccessor4715.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at org.gradle.util.ClosureBackedAction.execute(ClosureBackedAction.java:71)
	at org.gradle.util.ConfigureUtil.configureTarget(ConfigureUtil.java:154)
	at org.gradle.util.ConfigureUtil.configureSelf(ConfigureUtil.java:130)
	at org.gradle.api.internal.AbstractTask.configure(AbstractTask.java:616)
	at org.gradle.api.DefaultTask.configure(DefaultTask.java:307)
	at org.gradle.api.DefaultTask.configure(DefaultTask.java:44)
	at org.gradle.util.ConfigureUtil.configure(ConfigureUtil.java:103)
	at org.gradle.util.ConfigureUtil$WrappedConfigureAction.execute(ConfigureUtil.java:166)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection.getByName(DefaultNamedDomainObjectCollection.java:347)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection.getByName(DefaultNamedDomainObjectCollection.java:340)
	at org.gradle.api.internal.tasks.DefaultTaskCollection.getByName(DefaultTaskCollection.java:46)
	at org.gradle.api.tasks.TaskCollection$getByName$0.call(Unknown Source)
	at pub.ihub.plugin.verification.IHubTestPlugin$_apply_closure2.doCall(IHubTestPlugin.groovy:46)
	at jdk.internal.reflect.GeneratedMethodAccessor4714.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at com.sun.proxy.$Proxy60.execute(Unknown Source)
	at org.gradle.api.Action$execute.call(Unknown Source)
	at org.gradle.api.Action$execute.call(Unknown Source)
	at pub.ihub.plugin.IHubPluginAware$Trait$Helper$_getAction_closure3$_closure4.doCall(IHubPluginAware.groovy:55)
	at jdk.internal.reflect.GeneratedMethodAccessor185.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingClosure$1.lambda$run$0(DefaultListenerBuildOperationDecorator.java:180)
	at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication.reapply(DefaultUserCodeApplicationContext.java:86)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingClosure$1.run(DefaultListenerBuildOperationDecorator.java:177)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator$BuildOperationEmittingClosure.doCall(DefaultListenerBuildOperationDecorator.java:174)
	at jdk.internal.reflect.GeneratedMethodAccessor45.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:41)
	at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:43)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:245)
	at org.gradle.internal.event.BroadcastDispatch$SingletonDispatch.dispatch(BroadcastDispatch.java:157)
	at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:61)
	at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:346)
	at org.gradle.internal.event.BroadcastDispatch$CompositeDispatch.dispatch(BroadcastDispatch.java:249)
	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:141)
	at org.gradle.internal.event.ListenerBroadcast.dispatch(ListenerBroadcast.java:37)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
	at com.sun.proxy.$Proxy54.afterEvaluate(Unknown Source)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:183)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate$1.execute(LifecycleProjectEvaluator.java:180)
	at org.gradle.api.internal.project.DefaultProject.stepEvaluationListener(DefaultProject.java:1454)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$NotifyAfterEvaluate.run(LifecycleProjectEvaluator.java:189)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.lambda$run$0(LifecycleProjectEvaluator.java:105)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$0(DefaultProjectStateRegistry.java:250)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:267)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:249)
	at org.gradle.configuration.project.LifecycleProjectEvaluator$EvaluateProject.run(LifecycleProjectEvaluator.java:91)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:63)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:723)
	at org.gradle.api.internal.project.DefaultProject.evaluate(DefaultProject.java:150)
	at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:41)
	at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:69)
	at org.gradle.execution.DefaultTaskSelector.getSelection(DefaultTaskSelector.java:97)
	at org.gradle.execution.DefaultTaskSelector.getSelection(DefaultTaskSelector.java:78)
	at org.gradle.execution.CompositeAwareTaskSelector.getSelection(CompositeAwareTaskSelector.java:93)
	at org.gradle.execution.commandline.CommandLineTaskParser.parseTasks(CommandLineTaskParser.java:43)
	at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:46)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:55)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:26)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:63)
	at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:45)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:55)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:26)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:63)
	at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:48)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:55)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.lambda$select$0(DefaultBuildConfigurationActionExecuter.java:42)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:141)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry.withMutableStateOfAllProjects(DefaultProjectStateRegistry.java:128)
	at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:40)
	at org.gradle.initialization.DefaultTaskExecutionPreparer.prepareForTaskExecution(DefaultTaskExecutionPreparer.java:38)
	at org.gradle.initialization.BuildOperationFiringTaskExecutionPreparer$CalculateTaskGraph.populateTaskGraph(BuildOperationFiringTaskExecutionPreparer.java:117)
	at org.gradle.initialization.BuildOperationFiringTaskExecutionPreparer$CalculateTaskGraph.run(BuildOperationFiringTaskExecutionPreparer.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
	at org.gradle.initialization.BuildOperationFiringTaskExecutionPreparer.prepareForTaskExecution(BuildOperationFiringTaskExecutionPreparer.java:56)
	at org.gradle.initialization.DefaultGradleLauncher.prepareTaskExecution(DefaultGradleLauncher.java:233)
	at org.gradle.initialization.DefaultGradleLauncher.doClassicBuildStages(DefaultGradleLauncher.java:168)
	at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)
	at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:125)
	at org.gradle.internal.invocation.GradleBuildController$1.create(GradleBuildController.java:71)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:213)
	at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:67)
	at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:56)
	at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:56)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:66)
	at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:90)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:49)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$3.call(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
	at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:44)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.lambda$execute$0(InProcessBuildActionExecuter.java:59)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:86)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:58)
	at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:30)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.lambda$execute$0(BuildTreeScopeLifecycleBuildActionExecuter.java:34)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:33)
	at org.gradle.launcher.exec.BuildTreeScopeLifecycleBuildActionExecuter.execute(BuildTreeScopeLifecycleBuildActionExecuter.java:28)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:104)
	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:55)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:64)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecuter.execute(SubscribableBuildActionExecuter.java:37)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.lambda$execute$0(SessionScopeLifecycleBuildActionExecuter.java:54)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:67)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:50)
	at org.gradle.tooling.internal.provider.SessionScopeLifecycleBuildActionExecuter.execute(SessionScopeLifecycleBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:59)
	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
	at org.gradle.util.Swapper.swap(Swapper.java:38)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:55)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)

iHubTest插件处理系统属性时有问题

Describe the bug

添加在iHubTest/runIncludePropNames中的key,如果在启动测试时未提供该key,则该key的值被置为空串而不是null。

To Reproduce

  • 最新 cornucopiaihub-plugin分支
  • 打开verification_settings.gradle13行,并关闭第12行。
  • 执行如下任务(注意:未提供-Dtest.DupTimes自定义参数):
gradlew -Dspring.profiles.active=dev -DiHubTestClasses="**/AssetFT_08*" -Dtest.includedIDs=1010 -Dspring.config.name=service,test -Ddebug=true -DiHubTestMaxParallelForks=1 -DjacocoPackageInstructionCoverageRuleEnabled=false -DjacocoBundleBranchCoveredRatio=0.0 -DjacocoBundleInstructionCoveredRatio=0.0 cleanTest test
  • 从异常栈中可以看到
For input string: ""
java.lang.NumberFormatException: For input string: ""
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.base/java.lang.Long.parseLong(Long.java:702)
	at java.base/java.lang.Long.valueOf(Long.java:1144)
	at org.codehaus.groovy.vmplugin.v7.IndyInterface.fromCache(IndyInterface.java:283)
	at com.cheche365.cheche.test.common.ALayeredTestDataFT.duplicateTestData(ALayeredTestDataFT.groovy:288)
	at org.codehaus.groovy.vmplugin.v7.IndyInterface.fromCache(IndyInterface.java:283)
	at com.cheche365.cheche.test.common.ALayeredTestDataFT.doSetupSpec(ALayeredTestDataFT.groovy:61)
	at org.codehaus.groovy.vmplugin.v7.IndyInterface.fromCache(IndyInterface.java:283)
	at com.cheche365.cheche.test.common.ASpockSpecification.setupSpec(ASpockSpecification.groovy:45)
  • test.dupTimes不是null而是 空字串 ,导致转为long失败

Expected behavior

如果为提供test.dupTimes,那么该值应该为null。

Additional context

执行测试任务时,需要把.java-local,properties暂时重命名(禁用掉),这是另一个需要改进的点,我会另外报issue。

✨ 个性化com.github.ben-manes.versions插件配置,强化pub.ihub.plugin.ihub-bom版本管理

检查清单

问题

如题:个性化com.github.ben-manes.versions插件配置,强化pub.ihub.plugin.ihub-bom版本管理

  • 个性化ben-manes.versions插件配置,如:只检查release版本
  • 可以选择自动升级ihub-bom版本配置

解决方案

  • 个性化com.github.ben-manes.versions插件配置:
  • 强化pub.ihub.plugin.ihub-bom版本管理

备择方案

IDE插件也可以检查组建版本

对api级别的依赖有点问题

比如类似这些:

  • api project(':cornucopia-sdk')

  • api ('com.cheche365.common:cheche365-common-core') { transitive = false }

  • api 'org.springframework:spring-web'

无法体现在compileClasspath里。

java.endorsed.dirs属性问题

这个通常会影响Groovy项目,我记着IDEA会往里面塞东西,导致Groovy App运行时出错。
所以最好systemProps.remove 'java.endorsed.dirs'

✨ 拆分流水线任务

请描述您的需求或问题(必填)
目前使用build命令做流水线代码检查,任务串行较为耗时

描述您想要的解决方案
添加并行流水下线任务,拆分静态检查、测试、构建等流程

✨ 添加lombok.config配置功能

检查清单

问题

由于io.freefair.lombok插件6.1.0之后不再自动生成lombok.config文件,考虑ihub插件维护该功能,详见:freefair/gradle-plugins#379

解决方案

由ihub插件自动生成lombok.config配置文件

备择方案

建议io.freefair.lombok插件继续维护lombok.config配置,详见:freefair/gradle-plugins#379

给ihub-boot加一些功能

springboot_common_settings.gradle中包含三个增强特性:

  • 把传给Gradle task的-D参数,悉数传给应用进程
  • 提供一个类似于.env的功能
    这个功能有两种实现思路
  • 支持运行时以exploded的形式跑app,并支持定制解包内容

Welcome to plugins Discussions!

Discussed in #86

Originally posted by henry-hub August 1, 2021

👋 Welcome!

We’re using Discussions as a place to connect with other members of our community. We hope that you:

  • Ask questions you’re wondering about.
  • Share ideas.
  • Engage with other community members.
  • Welcome others and are open-minded. Remember that this is a community we
    build together 💪.

To get started, comment below with an introduction of yourself and tell us about what you do with this community.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.