Gradle - 处理外部资源

And*_*rea 3 groovy classpath gradle

我正在尝试将一个简单的Groovy项目移动到Gradle.我几乎能够配置项目,但我不知道如何处理外部资源.

基本上,我的应用程序需要访问JSON中的配置文件.在转移到Gradle之前,我曾经在命令行上传递此JSON文件的位置.我创建了一个简单的bash脚本来调用具有正确资源路径的主类.

使用Gradle,如果我理解正确,我应该能够将这个文件移动到src/main/resources/Groovy类中以某种方式提供它.问题是:怎么样?

编辑

如果我理解正确,资源应该在构建的JAR中结束.我的目标结构就像

src
  main
    groovy
      orgName
        packageName
          source.groovy
    resources
      orgName
        packageName
          config.json
Run Code Online (Sandbox Code Playgroud)

但是我没有看到在build目录中生成的packageName.jar中的资源

tim*_*tes 8

我敲了一个简单的例子......鉴于这个目录结构:

.
|-- src
|    |-- main
|         |-- groovy
|         |    \-- org
|         |         |-- Test.groovy
|         \-- resources
|              \-- config.json
\-- build.gradle
Run Code Online (Sandbox Code Playgroud)

在哪里Test.groovy:

package org

import groovy.json.*

public class Test {
  static main( args ) {
    def slurper = new JsonSlurper()
    def config = slurper.parseText( Test.class.getResource( '/config.json' ).text )
    println "Args were $args, config is $config"
  }
}
Run Code Online (Sandbox Code Playgroud)

config.json 是:

{
  "data": true
}
Run Code Online (Sandbox Code Playgroud)

build.gradle是:

apply plugin: 'groovy'

repositories {
  mavenCentral()
}

dependencies {
  groovy 'org.codehaus.groovy:groovy-all:2.0.0'
}

task runTest ( dependsOn: 'classes', type: JavaExec ) {
  main = 'org.Test'
  classpath = sourceSets.main.runtimeClasspath
  args 'ARG1'
}
Run Code Online (Sandbox Code Playgroud)

你应该只能运行gradle runTest它应该工作...