从本地文件应用Gradle插件
我有下面的gradle插件,用于启动java进程。此代码位于项目的buildSrc目录下名为从本地文件应用Gradle插件,gradle,build.gradle,gradle-plugin,gradlew,Gradle,Build.gradle,Gradle Plugin,Gradlew,我有下面的gradle插件,用于启动java进程。此代码位于项目的buildSrc目录下名为startapserverplugin.gradle的文件下 插件的代码如下所示: repositories.jcenter() dependencies { localGroovy() gradleApi() } } public class StartAppServer implements Plugin<Project> {
startapserverplugin.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
}
}
但它一直在失败。我试着在网上搜索我需要做的事情的例子,但到目前为止我一直没有成功。有人能告诉我应该怎么做吗?buildSrc文件夹被视为一个包含的构建,其中代码被编译并放在周围项目的类路径上。buildSrc中的实际
build.gradle
文件仅用于编译该项目,您在其中放置的内容在其他地方将不可用
您应该在buildSrc下创建一个普通的Java/Groovy/Kotlin项目。我不知道您是否可以使用默认的包,但通常最好还是有一个包名
例如,您的startapserver
插件应该位于buildSrc/src/main/groovy/my/package/startapserver.groovy
中。然后,您可以使用apply plugin:my.package.StartAppServer
在构建脚本中应用它
这本书中有很多很好的例子。你走的是正确的道路。第一个任务是使用以下方法导入外部gradle构建:
apply from: 'startAppServerPlugin.gradle'
然后,您可以通过以下方式应用插件:
apply plugin: StartAppServer
看到和
apply plugin: StartAppServer