gpt4 book ai didi

gradle - 新的gradle格式困惑和迁移原因找不到方法testCompile()

转载 作者:行者123 更新时间:2023-12-03 03:53:59 26 4
gpt4 key购买 nike

我有一个build.gradle

plugins {
id {some plugin for all projects}
id "com.diffplug.spotless" version "5.1.1"
}
然后,我有一个allprojects {}部分,它定义了一个应用插件:'jacoco';还有一个子项目{}部分,它声明了应用插件:'java',还有其他几个
立即添加一尘不染的东西和错误,因为它找不到Java插件,因此我将所有插件修改为在插件部分中,如下所示
plugins {
id "java"
id "checkstyle"
id "eclipse"
id "idea"
id "jacoco"
id "com.diffplug.spotless" version "5.1.1"
id "com.dorongold.task-tree" version "1.5" //This prints out a task tree (pretty print)
}
然后导致此错误
Could not find method testCompile() for arguments [junit:junit:4.11] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
因此由于某种原因,java插件丢失了。我无法在这里找到合适的组合,以将所有内容迁移到这种新的插件部分格式。
我怎么做?我随机尝试在所有项目和子项目中放置一个插件部分,但这会导致这个新错误
Could not find method plugins() for arguments [build_d8c2jgy4ua1m0vkv9kmvgefmc$_run_closure2$_closure5@62337fda] on root project 'providersvc-all' of type org.gradle.api.Project
这个新插件部分如何工作?没有破坏一切,我似乎无法迁移。我只希望Java插件,testCompile和Spotless现在可以很好地一起玩
编辑(忘记附加无法使用的完整修整文件):
plugins {
id "java"
id "com.diffplug.spotless" version "5.1.1"
}

ext {
//dependency versions every project usees so we version in one location all jars(less jar hell this way)
deps = [
'junit': 'junit:junit:4.11'
]
}

allprojects {
repositories {
jcenter()
mavenCentral()
maven {
//webpieces VERSIONED snapshots so you can lock on a snapshot
url "https://dl.bintray.com/deanhiller/maven"
}

//For testing locally
maven {
url uri('/tmp/myRepo/')
}
}
}

subprojects {
dependencies {
testCompile deps['junit']
}
}
谢谢,
院长

最佳答案

您仅将插件应用于根项目,而不是子项目。但是,如果您想通过subprojects配置来配置插件,则必须使用apply plugin语法。但是,如果您将两者结合起来使用,则不必使用旧的buildscript块来配置类路径和存储库。
这是一个例子。我假设根项目不是Java项目。我也删除了您的评论,而是插入了我的评论,其唯一原因是使它们更容易被发现。

plugins {
id "com.diffplug.spotless" version "5.1.1" apply false // <-- Set "apply false" here
// This makes it configure which version to use on the classpath for the entire build, but without applying it.
// Notice that the Java plugin is not specified here anymore.
// This is because it is a core plugin so you can't set the version (and I am assuming you don't want it on in the root project).
}

ext {
deps = [
'junit': 'junit:junit:4.11'
]
}

allprojects {
repositories {
jcenter()
mavenCentral() // <-- You can remove this if you want as it is already present as a proxy in jcenter().
maven {
url "https://dl.bintray.com/deanhiller/maven"
}

maven {
url uri('/tmp/myRepo/')
}
}
}

subprojects {
// Here are the two plugins
apply plugin: "java"
apply plugin: "com.diffplug.spotless"

dependencies {
testImplementation deps['junit'] // <-- testCompile renamed to testImplementation as the former has been deprecated for a long time
}
}

关于gradle - 新的gradle格式困惑和迁移原因找不到方法testCompile(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63442550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com