【问题标题】:Simplest possible gradle project to run groovy scripts运行 groovy 脚本的最简单的 gradle 项目
【发布时间】:2018-10-02 18:31:14
【问题描述】:

我有一堆运行良好的 groovy 脚本。但是,它们总是存在加载整个 JVM 的“冷启动”问题。我想将它们与 gradle 一起作为任务运行(不将它们定义为任务,这样它们就可以在没有 gradle 的情况下运行),这样我就可以将 gradle 保持在守护程序模式,从而保持“热”

我当前的项目并没有真正起作用,因为我需要的一个 groovy 文件不在类路径中。我可以手动加载它,但我怀疑有一些更简单的东西(约定?)

这是我的 repo 的树形视图

$ tree
.
├── build.gradle
├── settings.gradle
└── src
    ├── BBScm.groovy
    ├── Scm.groovy
    ├── StashScm.groovy
    ├── mixins.groovy
    └── stash.groovy

这是我的 build.gradle:

plugins {
    id 'groovy'
}

group 'org.bongiorno'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}
configurations {
    groovyScript
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.5.2'
}

task analyze {

    doLast{
        apply from: 'src/stash.groovy'
    }
}

我得到的错误很清楚:

  script '/Users/cbongiorno/dev/mystuff/stash/src/stash.groovy': 22: unable to resolve class StashScm 
   @ line 22, column 13.
     Scm stash = new StashScm(u: srcUser, p: srcPass, baseUrl: 'https://xxxxx')
             ^

要明确:我的问题是最简单的方法是什么?因为我绝对可以破解这个问题

【问题讨论】:

  • 你看过了吗:kobo.github.io/groovyserv
  • 我刚刚安装了它,我正在试一试……到目前为止,一切都很好。在某种程度上,它比我的想法更好,因为它更直观。另一方面,它是另一个安装工具。会做实验。谢谢
  • 好的,我现在使用了一点,它有完全相同的错误 - 我认为我看到的是编译错误而不是运行时错误。我认为 groovy 编译器不知道我在说什么,即使这个文件就在运行的文件旁边。我认为我没有早点遇到这个问题的原因是因为整个代码目录在intellij中添加为src

标签: gradle groovy


【解决方案1】:

src 是您放置代码以进行编译并在上学期构建工件的位置,但如果您想添加代码(以源代码形式),您必须使用 buildSrc 目录

您可以在https://docs.gradle.org/current/userguide/organizing_gradle_projects.html#sec:build_sources找到更多文档

同样,depedencies 部分是您查找项目依赖项的位置,但如果您在 build 逻辑中有依赖项,则使用 build 部分,您可以使用 classpath 字词而不是compile

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • @Alex.K.你说的对。抱歉,我会尽力解释我的答案
  • 好的,使用这种方法我得到java.lang.ClassNotFoundException: org.apache.ivy.core.report.ResolveReport
  • 所以我假设现在 gradle 能够找到你的脚本。你在里面用Grappe吗?可以提供代码吗?
猜你喜欢
  • 2013-06-25
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
相关资源
最近更新 更多