3

我正在尝试将一个简单的 Groovy 项目移至 Gradle。我主要能够配置项目,但我不知道如何处理外部资源。

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

如果我理解正确,使用 Gradle,我应该能够将该文件移入src/main/resources/并以某种方式从 Groovy 类中获得它。问题是:如何?

编辑

如果我理解正确,资源应该以生成的 JAR 结尾。我的目录结构就像

src
  main
    groovy
      orgName
        packageName
          source.groovy
    resources
      orgName
        packageName
          config.json

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

4

2 回答 2

8

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

.
|-- src
|    |-- main
|         |-- groovy
|         |    \-- org
|         |         |-- Test.groovy
|         \-- resources
|              \-- config.json
\-- build.gradle

在哪里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"
  }
}

config.json是:

{
  "data": true
}

并且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'
}

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

于 2012-07-18T08:05:42.887 回答
2

Gradle 不要求您将文件视为资源。这只是 Java/JVM 的最佳实践。如果这样做,则必须通过类加载器访问该文件。有关说明,请参阅在 Java中查找资源。请注意,这与 Gradle 无关,只是 Gradle 会将文件添加src/main/resources到构建的 Jar 下。

于 2012-07-18T08:03:27.467 回答