gpt4 book ai didi

gradle - 从本地文件应用Gradle插件

转载 作者:行者123 更新时间:2023-12-03 03:45:52 25 4
gpt4 key购买 nike

我有以下gradle插件,可以启动Java进程。该代码位于项目的buildSrc目录下名为startAppServerPlugin.gradle的文件中。

插件的代码如下所示:

    repositories.jcenter()
dependencies {
localGroovy()
gradleApi()
}
}

public class StartAppServer implements Plugin<Project> {
@Override
void apply(Project project) {
project.task('startServer', type: StartServerTask)
}
}

public class StartServerTask extends DefaultTask {

String command
String ready
String directory = '.'

StartServerTask(){
description = "Spawn a new server process in the background."
}

@TaskAction
void spawn(){
if(!(command && ready)) {
throw new GradleException("Ensure that mandatory fields command and ready are set.")
}

Process process = buildProcess(directory, command)
waitFor(process)
}

private waitFor(Process process) {
def line
def reader = new BufferedReader(new InputStreamReader(process.getInputStream()))
while ((line = reader.readLine()) != null) {
logger.quiet line
if (line.contains(ready)) {
logger.quiet "$command is ready."
break
}
}
}

private static Process buildProcess(String directory, String command) {
def builder = new ProcessBuilder(command.split(' '))
builder.redirectErrorStream(true)
builder.directory(new File(directory))
def process = builder.start()
process
}

}

我试图找出一种将其导入到我的主 build.gradle文件中的方法,因为到目前为止我尝试的所有操作均未成功。

到目前为止,我已经尝试过了:
apply from: 'startAppServerPlugin.gradle'
apply plugin: 'fts.gradle.plugins'

但是它一直在失败。我尝试过在线搜索有关我需要做的事的示例,但是到目前为止,我一直没有成功。谁能提供一个提示,提示我应该怎么做?

最佳答案

buildSrc文件夹被视为包含的内部版本,其中代码被编译并放置在周围项目的类路径中。 buildSrc中的实际build.gradle文件仅用于编译该项目,并且您放入其中的内容在其他地方将不可用。

应该将您的类创建为buildSrc下的普通Java / Groovy / Kotlin项目。我不知道您是否可以使用默认程序包,但是通常最好的方法还是使用程序包名称。

例如,您的StartAppServer插件应位于buildSrc/src/main/groovy/my/package/StartAppServer.groovy中。然后,您可以使用apply plugin: my.package.StartAppServer在构建脚本中应用它。

user guide中有很多很好的例子。

关于gradle - 从本地文件应用Gradle插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303110/

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