2016-04-15 10 views
2

Gradle 2.4で構築されたJavaライブラリがあり、Java 6、Java 7、Java 8、Groovy 2.xなどがあります。そのように、などの後方互換可能な限りであることを、私はsourceCompatibilityだけでなく、1.6targetCompatibilityの両方を持っているのlibを書いています:GradleとGroovy/Spockを使ってJava 6のlibやappをテストする

build.gradle 
============ 
apply plugin: 'java' 
apply plugin: 'groovy' 

sourceCompatibility = '1.6' 
targetCompatibility = '1.6' 

repositories { 
    mavenCentral() 
    jcenter() 
} 

dependencies { 
    compile (
     'org.slf4j:slf4j-api:1.7.12' 
    ) 

    testCompile (
     'org.codehaus.groovy:groovy-all:2.4.6' 
     ,'org.spockframework:spock-core:1.0-groovy-2.4' 
    ) 
} 

しかし、私のことができるようにはならない理由はありませんGroovy/Spockで単体テストを書いてください。 Groovyがmain/compile/runtimeクラスパスに含まれていない限り、JVM言語でテストを書くことができます。そして私はGroovy/Spockを選びました!

問題は、これまでにこのようなことをしたことはありません。 I think Groovy-AllとSpockをtestCompileクラスパスに追加する必要がありますが、Groovyプラグインを適用するかどうか、他の設定を適用する必要があるかどうかはわかりません。再び

  • メインコンパイル/実行時のクラスパスは、Groovyの自由でなければならないと私は

を好きなものを含むことができ、Javaの1.6

  • テストコンパイル/実行時クラスパスに適合するものでなければなりませんどのような具体的な変更を私が上にする必要がありますかに関する任意のアイデア?

  • 答えて

    2

    あなたはGradleのはどんなのGroovyをコンパイルしたい場合は、メインのソースまたは単にテストソースは、あなたがgroovyのGradleプラグインを適用したいだろうということ。つまり、ファット・ジャー(つまり、スタンドアロン・アプリケーションとして実行できるように、依存ライブラリーが組み込まれたJARライブラリー)を構築していない限り、ランタイム・クラスパス上にGroovyとの関係はないはずです。あなたはtestCompile依存関係にSpock/Groovyを追加したいと思っていますが、testCompileのスコープを維持している限り、太いJARを作成してもメインコンパイルクラスパス、最終的に構築された成果物、実行時にクラスパス上に存在する必要があります。

    関連するメモでは、Gradleにすべての依存関係の設定を変更するアクセス権もあります。その詳細については、Gradle Dependency Management文書をご覧ください。

    +0

    ありがとう@alexanerific(+1) - 私の編集した 'build.gradle'を見てください - それは今あなたに見えますか?再度、感謝します! – smeeb

    +0

    私にはかなりおもしろい。あなたが気にしておきたいことは、Groovy 2.3以降を使用することです。 http://groovy-lang.org/download.html#requirementsでは、Groovy 2.3以上のバージョンでJava 1.7を最低限必要とする状況について説明しています。これにより、Java1.6のランタイム要件には影響しませんが、ビルド時にソースコードの互換性に影響する可能性があります。 Groovy for Spockをちょうど使用している場合は、Groovy 2.2とSpock 1.0-groovy-2.0を使用できるはずです。思考の糧。あなたと一緒にそのすべてのゲルがあれば、私の答えを受け入れる気がしますか?束の親、ありがとう、幸せなテスト。 – alexanderific

    関連する問題