我正在尝试 OpenRewrite,我想用“删除未使用的导入”配方针对我们的大型多模块 Gradle 项目进行测试。
我选择 init-script 方法,这样我就不必编辑我们的
build.gradle
。我从网站上复制了脚本并将其命名为unused-imports.gradle
。exclusion
部分来排除我们生成的文件:
initscript {
repositories {
maven { url "https://plugins.gradle.org/m2" }
}
dependencies { classpath("org.openrewrite:plugin:latest.release") }
}
rootProject {
plugins.apply(org.openrewrite.gradle.RewritePlugin)
dependencies {
rewrite("org.openrewrite:rewrite-java")
}
rewrite {
activeRecipe("org.openrewrite.java.RemoveUnusedImports")
exportDatatables = true
exclusion(
"**/generated/**"
)
}
afterEvaluate {
if (repositories.isEmpty()) {
repositories {
mavenCentral()
}
}
}
}
当我使用命令
wsl ./gradlew --init-script unused-imports.gradle rewriteDryRun
运行它时,它似乎一切正常。我看到我们所有的模块和子模块都被解析,直到大约半小时后我看到这个:
Scanning sources in project :
Using active styles [org.openrewrite.java.Checkstyle]
<============-> 99% EXECUTING [58m 45s]
> IDLE
> IDLE
> :rewriteDryRun
> IDLE
一个小时后我终止了命令,因为似乎没有任何进展。
可能出了什么问题?
附加信息:
org.gradle.jvmargs=-Xmx25G -XX:+UnlockDiagnosticVMOptions -XX:GCLockerRetryAllocationCount=100
。 (取自另一个 StackOverflow 线程)Cause 80: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find some:dependency:.
Required by:
project :our:module > project :another:module
我尝试修改
repositories
部分,使其反映我们的 build.gradle
部分,但没有什么区别:
afterEvaluate {
if (repositories.isEmpty()) {
repositories {
maven {
url = uri('https://our/artifactory/repo')
}
mavenCentral()
}
}
}
好吧,在我一天的工作结束时,我让它运行,最终它实际上完成了!
BUILD SUCCESSFUL in 6h 7m 51s
看来我必须非常有耐心。