2009-06-20 8 views
12

Ho una situazione in cui alcuni dei miei codici groovy fanno riferimento ai miei file java, ma ho anche diversi file java che fanno riferimento allo stesso codice groovy. Quando provo a compilare in Maven, ho bisogno di compilare il groovy prima o dopo java, e questo non funzionerà perché il codice groovy dipende da alcuni file java, e diversi file java dipendono dal codice groovy. C'è un modo per gestire questo tipo di dipendenza?maven compile groovy

risposta

8

Dovresti riuscire a compilare il codice aggiungendo il plug-in gmaven a maven pom.xml. Genera stub Java del tuo codice groovy per gestire il tipo di riferimento inter-lingua con cui hai a che fare. Lo uso parecchio e funziona molto bene.

0

È possibile suddividere il codice in livelli e fare in modo che i livelli inferiori chiamino livelli superiori, ma mai viceversa. Ad esempio, in un'applicazione Web è possibile avere un livello di visualizzazione, un livello di servizio e un livello di persistenza. Il livello di vista chiama il livello di servizio e il livello di servizio chiama il livello di persistenza, ma il livello di persistenza non chiamerà mai il livello di servizio o il livello di vista. Se vuoi che il codice groovy/java esista nello stesso livello, assicurati di chiamare l'altro, ma non si chiamano entrambi. La linea di fondo è che si dovrebbero evitare le dipendenze bidirezionali.

+0

-1 C'è un compilatore congiunto Groovy-Java. –

+0

È vero, ma se le dipendenze bidirezionali possono portare a codice inutilmente complesso e meno gestibile. Nel contesto di questa domanda concordo sul fatto che l'utilizzo di GMaven è la risposta giusta, ma vorrei comunque rifattorizzare il codice per eliminare o almeno ridurre le relazioni bidirezionali. – rich

11

Sì, utilizzare solo GMaven. Dato che si tratta di un compilatore congiunto, gestisce automaticamente il tuo java in groovy e groovy con le dipendenze java.

In breve, sarà necessario:

  • includono la gmaven-plugin nella vostra pom.xml;
  • mantieni le tue lezioni di groovy sotto src/main/groovy o src/test/groovy;
  • collega il plug-in gmaven alle fasi del ciclo di vita rilevanti.

Per ulteriori dettagli, vedere building groovy projects.