2013-12-22 14 views
20

I以下のbuild.gradleファイルを持っている:gradleを使用してsourceSetにリソースを追加するにはどうすればよいですか?現在、

apply plugin: 'java' 

repositories { 
    mavenCentral() 
} 

sourceSets { 
    main { 
     java { 
      srcDir 'src/model' 
     } 
     resources { 
      srcDir 'images/model' 
     } 
    } 

    test { 
     java { 
      srcDir 'tests/model' 
     } 
     resources { 
      srcDir 'images/model' // <=== NOT WORKING 
     } 
    } 
} 

dependencies { 
    compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar') 
    runtime fileTree(dir: 'libs', include: '*.jar') 

    testCompile group: 'junit', name: 'junit', version: '4.+' 
} 

場合こちらマイリポジトリ:「テスト/モデル」フォルダ内のテストが必要なので、失敗している私の49回のテストのうちhttps://github.com/quinnliu/WalnutiQ

と4 "images/model"フォルダ内のファイル。リソースを正しく追加するにはどうすればいいですか?ありがとう!

答えて

31

私はあなたのbuild.gradleを詳しく見ていて、パスが少しずれているようです。

あなたはsrc/modelとしてソースを指定し、まだあなたのプロジェクト構造とJavaソースはmodelは、ソースの宣言がなければならないことを意味し、あなたのパッケージ名、であることを示唆している:テスト用

main { 
    java { 
     srcDir 'src' 
    } 
} 

同じ:

test { 
    java { 
     srcDir 'tests' 
    } 
} 

リソースが不足しています。使用しているコードでImageIO.read(getClass().getResource(BMPFileName))
getClass().getResource()がリソースへの相対パスを使用しています。同じレベルのリソースを維持するには、リソースの宣言を更新し、modelを削除する必要があります。

test { 
    java { 
     srcDir 'tests' 
    } 
    resources { 
     srcDir 'images' 
    } 
} 

また、それが動作する前に

./gradlew clean 

を実行する必要があります。

enter image description here

はそれが役に立てば幸い:)

13

ビルドスクリプトで使用されている構文が正しいです。なぜ、同じリソースディレクトリを両方のソースセットに追加するのか、そしてなぜそれが1つのケースでは機能していないと主張するのかはわかりません。

srcDir "foo"は、別のディレクトリを追加します。代わりにデフォルトのディレクトリを置き換える場合は、代わりにsrcDirs = [ "foo" ]を使用してください。しかし、これは手元の問題を解決しません。

リソースをロードするコードを見て、それに伴う問題を除外するとよいでしょう。

+0

私はコピーして貼り付けていますが、私のレポのクローンを作成し、Gradleのビルドを実行するかどうかを確認しますすることはできません。ここで

が更新build.gradleで結果ですそれ。 –

関連する問題