2015-06-29 15 views
5

Abbiamo un problema frustrante con il nostro spazio di lavoro Eclipse. Ecco un esempio di alto livello di ciò che sta accadendo:Classpath Eclipse e Gradle fuori sincrono: non può essere risolto con un tipo

ProjectA
- src/main/java/...
- build.gradle

ProjectB
- src/main/java/...
- build.gradle

Dopo aver eseguito gradle eclipse e l'importazione dei progetti in Eclipse, occasionalmente otterremo 'MyType non può essere risolto in un tipo', anche se la seguente condizione:

  • I nostri progetti hanno il contenitore libreria Gradle sul loro percorso di classe
  • I progetti hanno i progetti delle aree di lavoro corretti nel loro contenitore Gradle
  • cose come CTRL + Clicca lavoro da tipi che stanno mostrando con sottolineatura rossa (vale a dire errore di compilazione) Eclipse che significa sa esattamente come raggiungere quei tipi, ma il compilatore non può trovarli
  • riga di comando Gradle costruisce il lavoro come previsto

Questo sta accadendo in tutta la squadra e non possiamo capire perché Eclipse continua ad andare fuori sincrono e non può essere compilato di volta in volta. Che risolve di solito il problema è una combinazione di:

  • Progetto> pulita in Eclipse
  • Gradle cleanEclipse o eclisse Gradle
  • reimportazione dei progetti
  • ecc

Altre note:

  • Utilizzo di Gradle versione 2.2.1
  • accade in entrambi Eclipse Luna e Marte Eclipse
  • Utilizzando JDK 8

Qualcun altro ha avuto questi tipi di problemi di compilazione in Eclipse con i progetti Gradle?

+0

Inoltre, mostra usa il tuo 'build.gradles'. –

+2

@Jared Burrows, si suppone che sia un commento costruttivo? Non sono sicuro del motivo per cui dovrei utilizzare Android Studio quando non lo sviluppo per Android. Inoltre, non uso IntelliJ perché i plugin di cui ho bisogno sono in Eclipse. – thedude19

+0

Puoi farla franca solo aggiornando il progetto (F5) in Eclipse? – Robert

risposta

4

Una fonte di tali problemi può essere quella di consentire a Gradle di generare i file di metadata/installazione del progetto Eclipse (ciò che si ottiene eseguendo gradle eclipse). So che i team Maven e Gradle vogliono davvero che il loro strumento (Maven o Gradle) generi quella roba, ma notoriamente fanno un lavoro tutt'altro che ideale. Ad esempio, l'ultima volta che ho usato Gradle ha configurato il percorso .class per utilizzare un percorso della libreria JRE codificato anziché il preferito Execution Environment. Questo tipo di lavoro scarso di generare file crea problemi agli sviluppatori.

Invece, la raccomandazione di Eclipse è di configurare manualmente i progetti (per la maggior parte), lasciando solo che Gradle gestisca il suo contenitore Classpath, quindi controllando i file .project, .classpath e .settings e le cartelle in. SCM (svn, git, ecc.).In questo modo, il processo di verifica di un progetto in un'area di lavoro è automatico e non richiede l'esecuzione di gradle eclipse o mvn eclipse:eclipse per tutto il tempo.

Questo è il modo in cui i progetti Eclipse sono stati originariamente progettati e destinati a essere gestiti, e funziona molto bene. Ho lavorato con configurazioni del genere su progetti molto grandi (oltre 100 progetti separati in Eclipse e dozzine di sviluppatori). Riduce inoltre il numero di passaggi da passare da zero all'app in esecuzione.

Questa è una di quelle differenze filosofiche tra Maven/Gradle ed Eclipse; quando si tratta di farlo, IMO, l'IDE dovrebbe gestire le cose e lo strumento di costruzione/dipendenza dovrebbe stare fuori strada.

Provare manualmente a ottenere le cose correttamente nella configurazione del progetto e quindi controllare in quei file - vedere se non allevia il mal di testa che la tua squadra affronta in quest'area.

+0

Grazie per la fantastica risposta. Attualmente sto lavorando alla sperimentazione di questo oggi. – thedude19

+0

Implementate le modifiche per la mia squadra. Funziona perfettamente. Grazie! – thedude19

Problemi correlati