ihub-pub / plugins Goto Github PK
View Code? Open in Web Editor NEWA set of Gradle plug-ins that greatly simplify project management / 一套极大简化项目管理的Gradle插件集
Home Page: https://doc.ihub.pub/plugins
License: Apache License 2.0
A set of Gradle plug-ins that greatly simplify project management / 一套极大简化项目管理的Gradle插件集
Home Page: https://doc.ihub.pub/plugins
License: Apache License 2.0
从英文看,一个是 原形 、一个是 单数,无法体现 包含一个 和 包含多个 的含义。
建议改为 includePath 和 includePaths ,或者 includeProject 和 includeProjects 。
dependencies扩展DSL配置属性:exclude、transitive
.java-local.properties
机制貌似已经推广到了所有插件中,但是其在测试任务中的效果却貌似不是我们所期望的。
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
该项目功能测试无需连接写在.java-local.properties
的MySQL,spring.datasource.url
在本项目功能测试时不应生效。
至于改进方案,我也没想清楚,毕竟从 Test 插件中彻底移除.java-local.properties
机制,好像也不是个好主意。
那么提供一个 是否启用该机制的开关 如何?由于所有插件都有该机制,但是不同插件默认是否开启该机制却有不同,比如 Boot 插件默认应该开启,而 Test 插件则正相反。
请描述您的需求或问题(必填)
用于git-hooks执行一些命令,如pre-commit
时执行静态检查和测试用例
描述您想要的解决方案
参照替代方案
描述您考虑过的替代方案
https://github.com/STAR-ZERO/gradle-githook
https://github.com/jakemarsden/git-hooks-gradle-plugin
见verification_settings.gradle
,第13行添加的配置,我是在试错了很多次才找到的,可能还不全。
因为使用了各个支持include/excludePropNames
机制的插件的用户,可能都很难记清runtime所需的参数名全集。
所以维护一个include可能并不现实,至少对cornucopia项目而言,如果 Test 插件同时提供exclude机制的话,我就只需简单地把endirs属性排除掉、其他属性都要就行了。
现在这个属性仅对 bootRun 有效,但是可以把它改造成其他一些Task也能支持的机制,比如 test。
名字可以改成.java-local.properties
,里面的都是Java属性。
但是这个文件的优先级要低于命令行中指定的同名-D
参数。
有了.java-local.properties
机制,就可以把类似于debug=true
、spring.profiles.active=dev
这种高频属性写在文件里,个别Task的特殊需求则通过命令行指定-D
参数来追加或者覆盖。
最新的cornucopia,ihub-plugin分支,错误如下:
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访问失败,需要提升代码里写死的版本么?还是别的错?
我指定了-Dtest.maxParallelForks=1
,但是下图明显用上了所有核(16个)。
最新 cornucopia ,ihub-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
-Dtest.maxParallelForks=1
意味着所有测试用例在一个进程里串行执行。
最新的M5有兼容问题。
我忘了是和 JUnit 还是和 Groovy 的。
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.
添加BOM插件扩展配置,支持自定义排除组件依赖以及导入默认依赖
1.1.2
No response
1.env某些情况取不到值,如下:
REPO_USERNAME: ***
REPO_PASSWORD: ***
SIGNING_KEY_ID: ***
SIGNING_PASSWORD: ***
SIGNING_SECRET_KEY: ***
2.同时使用env和system属性时system不是最优先;
正常取到值
取不到值
No response
No response
No response
Gradle的Jacoco插件默认仅提供三种报告,分别是XML、CSV和HTML。
而GitLab CICD过程中可以通过解析控制台输出的信息,得到各种类型语言的项目的测试覆盖率,然后通过特定URL显示在README中。
参考最新的 cornucopia、 ihub-plugin 分支,其中的verification_settings.gradle
中添加了一段代码。
这段代码可以打印每一个项目测试后的覆盖率报告。尽管有用,但是我们还是需要一个 总覆盖率 来提供CICD所用。
所以,这段代码的启发在于以下几点:
可以得到各个项目各自的、分项的覆盖率
各个项目的覆盖率是否可以集中保存
这需要仔细研究一下Gradle执行任务的机制,看看有没有提供类似如下特征的机制:
能钩住在各个项目上运行的、关注的任务
用于记录各项目的分项覆盖率。
能钩住整体的生命循环关键节点
如此才有机会计算 总覆盖率。
能声明全局的、跨任务、跨项目的变量
如果想透过static成员的思路来实现,那么必须考虑Gradle Daemon为true时的场景。
总覆盖率的计算规则
尽管我们最为关心分支覆盖率,那么直观做法就是把各个项目的分支覆盖率简单平均,从而得到 总覆盖率。
但是,上述其实是 分支总覆盖率,如果再彻底一点:首先将各项目的分项覆盖率简单平均,然后将各项目的简单平均值再做简单平均,得到另一种 总覆盖率。
上述两种计算方法仅是抛砖引玉,无论使用何种计算方式,最后输出的文本必须用容易被解析的特殊格式输出到控制台。
本需求可能需要比较长时间的思考、验证,可以作为一个重要但不优先的任务。
另外,在settings.gradle
中,我添加了两个有类似能力的插件,但是被注释掉了,因为他们不兼容最新版本的Gradle,其中有一个插件比较活跃,可能会在短期内推出新版。
但是它们估计都只能打印分项覆盖率,而不能统计 总覆盖率 ,这个功能是本插件可以突破的亮点。
因为它需要 java-library 插件,否则api级别不可用。
项目分支:ihub-plugin
groovy_settings.gradle
和groovy_essential_deps.gradle
作为替代方案apply { plugin '...ihub-native' }
,否则报IHubVerificationPlugin
的问题,以为是ihub-native
的问题,但其实是 CodeNarc 配置找不到,照着代码的要求添加目录和文件后就可以了,但是错误提示可以改得再友好一些gradlew classes
时报错
https://maven.pkg.github.com/ihub-pub
这个需要授权的repo去解析公司组件 Pom 信息,所以必定401
失败,建议参考default_deps.gradle
的 14~34 行配置,修复IHubPluginsPlugin
中的相关问题公司的repo只有 HTTP ,所以会出问题,定义一个“允许不安全协议”的属性,默认值是true
就行。
参考default_deps.gradle
。
目前每个项目都会打印,重复信息太多
Describe the bug
通过-D
传入的整数型参数,其字串转为整数时有问题,比如将字符2
转换为整数50
To Reproduce
test
任务-DiHubTest.maxParallelForks=2
50
Expected behavior
字符2
应该转换为整数2
Additional context
可能有关的Groovy已修复Issue:GROOVY-8957
#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/runIncludePropNames中的key,如果在启动测试时未提供该key,则该key的值被置为空串而不是null。
ihub-plugin
分支verification_settings.gradle
第13
行,并关闭第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
失败如果为提供test.dupTimes
,那么该值应该为null。
执行测试任务时,需要把.java-local,properties
暂时重命名(禁用掉),这是另一个需要改进的点,我会另外报issue。
如题,将原先versioning_settings.gradle
中的内容也做进插件。
如题:个性化com.github.ben-manes.versions
插件配置,强化pub.ihub.plugin.ihub-bom
版本管理
ben-manes.versions
插件配置,如:只检查release版本ihub-bom
版本配置IDE插件也可以检查组建版本
有了这个机制我就可以通过testIncludePropNames
将传给Gradle进程的spring.profiles.active
属性传递给测试用例worker进程。
顺便可以利用testSkippedPropNames
属性来顺便解决 #14 的遗留问题。
比如类似这些:
api project(':cornucopia-sdk')
api ('com.cheche365.common:cheche365-common-core') { transitive = false }
api 'org.springframework:spring-web'
无法体现在compileClasspath里。
由于没有子项目,不存在公共日志内容引发
优化各种基础配置,jvm参数、缓存配置等,优化构建时间
区分Extension和Task属性配置,保留Task原始属性
纯Java项目不依赖Spock组件,而是依赖JUnit组件
另外需要整理groovy依赖组件 #33
完善bootJar以及镜像构建任务配置
这个通常会影响Groovy项目,我记着IDEA会往里面塞东西,导致Groovy App运行时出错。
所以最好systemProps.remove 'java.endorsed.dirs'
请描述您的需求或问题(必填)
目前使用build命令做流水线代码检查,任务串行较为耗时
描述您想要的解决方案
添加并行流水下线任务,拆分静态检查、测试、构建等流程
完善原生镜像构建配置
由于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
原springboot_common_settings.gradle
中包含三个增强特性:
-D
参数,悉数传给应用进程.env
的功能springboot_common_settings.gradle
Originally posted by henry-hub August 1, 2021
We’re using Discussions as a place to connect with other members of our community. We hope that you:
To get started, comment below with an introduction of yourself and tell us about what you do with this community.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.