3

単純なGroovyプロジェクトをGradleに移動しようとしています。私はほとんどプロジェクトを構成することができましたが、外部リソースを処理する方法がわかりません。

基本的に、私のアプリケーションはJSONの構成ファイルにアクセスする必要があります。Gradleに移動する前は、コマンドラインでこのJSONファイルの場所を渡していました。リソースの正しいパスを使用してメインクラスを呼び出すための簡単なbashスクリプトを作成しました。

Gradleを正しく理解していれば、このファイルをGroovyクラスに移動しsrc/main/resources/て、Groovyクラスから利用できるようになるはずです。質問は:どうやって?

編集

私が正しく理解していれば、リソースはビルドされるJARで終了するはずです。私のdir構造は次のようなものです

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 に答える