2012-10-07 11 views
6

Voglio migrare un progetto Maven giocare 2/SBT:Fonte nella directory test/risorse otterrà compilato in Play 2

ho avuto alcune risorse per le prove in src/test/resources nel progetto Maven, che mi sono trasferito a test/resources/ nel progetto Play (grazie a Schleichardt per his answer on Stackoverflow).

Questo funziona per i file normali (testo, dati binari ...), ma ora ho problemi con i file Java-Source che si trovano anche nella directory test/resources/ (devo testare un parser Java nel mio progetto su diversi java file sorgenti). Quando chiamo test in gioco, questi file verranno anche compilati e quindi ottengo errori.

Come posso impedire che i file in test/resources/ vengano compilati da Riproduci/sbt?

+0

sarebbe aiutare a cambiare il nome del file? Ad esempio MyClass.java su MyClass.txt? – Schleichardt

+0

Sì, funziona, ma ci sono centinaia di file Java in questa directory di risorse. Quindi forse esiste una soluzione migliore? – Sonson123

+2

Può aiutare http://stackoverflow.com/questions/7371802/sbt-to-exclude-source-directory –

risposta

8

Poiché la directory delle risorse di test si trova in una directory che compila le origini java, è possibile spostare la cartella delle risorse di test. Aggiungere questo alle impostazioni:

resourceDirectory in Test <<= (baseDirectory) apply {(baseDir: File) => baseDir/"testResources"} 

Per esempio nel progetto/Build.scala:

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(
    resourceDirectory in Test <<= (baseDirectory) apply {(baseDir: File) => baseDir/"testResources"} 
) 

controllo le modifiche nella console con:

play "show test:resource-directory" 
+0

Grazie ancora per la tua risposta dettagliata, finalmente funziona anche con i file sorgente. – Sonson123

+0

Dopo questo comando di configurazione ed eclipsify, eclipse non vedrà "testResources" come percorsi per classpath. Cosa dovremmo fare dopo? – raisercostin

2

Se si desidera aggiungere di prova -risorse è necessario modificare project/Build.scala aggiungendo quanto segue al proprio PlayProject .... .settings (

Non dimenticare di lasciare una linea vuota tra queste linee. Non dimenticare di dichiarare di eclissare le cartelle di origine. Inoltre è necessario aggiungere un'importazione prima della riga visualizzarloProject

import com.typesafe.sbteclipse.core.EclipsePlugin._ 

val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA).settings(defaultScalaSettings:_*).settings(

    ,resourceDirectory in Test <<= baseDirectory(_/"test-resources") 

    ,EclipseKeys.createSrc := EclipseCreateSrc.Default + EclipseCreateSrc.Resource 

) 

Dopo questo si potrebbe fare

play test 
play test-only xxx.yyy.zzz.TheTest 
play eclipsify 
+0

Ho ancora alcuni problemi con le risorse che non si trovano quando corro da Eclipse, ma penso che questo sia un passo avanti verso una soluzione eclissi funzionante per me. – Sonson123

Problemi correlati