Domanda

Non è un ottimo titolo, cercherò di spiegare.

Questo ha lavorato per mesi, poi oggi per qualche ragione sconosciuta, eclissi non posso risolvere qualsiasi delle importazioni dai fratelli (progetti tra pari), in cui nulla è cambiato (davvero!). Eclissi o Plug-in Eclipse aggiornamenti, senza modifiche al codice sorgente, senza modifiche di configurazione.

Ho una struttura di progetto abbastanza standard:

parent_project
-- clild_project_a
---- pom.xml
-- clild_project_b
---- pom.xml
-- child_project_c
---- pom.xml
-- pom.xml (for parent).

Ora sia di progetto a e b dipendono dal codice c.

proiettare un pom.xml.

  <parent>
    <artifactId>parent_project</artifactId>
    <groupId>com.mydomain.ge</groupId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  ...
  <dependencies>  
    <dependency>
        <groupId>com.mydomain.ge</groupId>
        <artifactId>child_project_c</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>

e nel pom.xml genitore:

  <modules>
    <module>child_project_a</module>
    <module>child_project_b</module>
    <module>child_project_c</module>
  </modules>

Così ora in Eclipse, tutte le istruzioni di importazione nel progetto di dire una importazione da Progetto C:

package com.skillkash.ge.api;
import com.skillkash.ge.dao.AlreadyExistsException;

In questo modo:

The import com.skillkash.ge.dao.AlreadyExistsException cannot be resolved.

ho provato il follwing:

  • facendo un pulito Maven (usando click-destro> Esegui come-> Maven clen su tutti i bambini e genitori.
  • facendo un Maven dipendenze aggiornamento su tutti i progetti
  • fare un pacchetto maven su ciascun progetto.
  • facendo m2 Maven -.> "Configurazioni di progetto di aggiornamento" a tutti i progetti
  • Eclipse riavvio.
  • il riavvio del computer.

Nota 1 , in Eclipse Ho 4 progetti separati, uno per ogni bambino, e uno per il genitore. i tre progetti figlio vengono anche controllati in SVN, ma non posso facilmente checkin il progetto principale in quanto ha le cartelle del progetto bambino sotto di esso.
Nota 2 , so molto di formica, ma sono un noob a Maven, ma havent avuto problemi con esso fino ad ora. per esempio. Ive idea se Maven sta dicendo eclissi di utilizzare la fonte del progetto depentant, o se è per compilare vaso costantemente nel repository m2 locale e gli usi di progetto dipendente che.
Nota 3 , tutte le altre dipendenze (esterne) sono ok.
Nota 4 , Ive ha verificato che "Risolvi dipendenze da progetti Workspace" sia selezionata.
Nota 5 , nel ecipse java dialogo percorso di generazione, i progetti tra pari su cui è dipendente non sembrano essere sia "fonte", "progetti" o schede "biblioteche". Biblioteche ha un "depedencies Maven" sub albero, ma sotto Thare sono solo vasi esterni come log4j.

È stato utile?

Soluzione

Funziona se si fa un mvn clean install sulla pom genitore dalla riga di comando invece che in Eclipse? Che escludere due cose:

  1. O se non si tratta di un problema eclisse
  2. Se il vostro problema ha a che fare con te utilizzando package invece di install

Ho notato che si stava utilizzando l'obiettivo pacchetto di Maven. In generale, si dovrebbe sempre fare mvm clean install invece di mvn clean package per il lavoro sul computer locale. Se non si utilizza l'obiettivo installare, quindi proiettare C non viene installato al repository locale (di default in $ HOME / .m2 / repository o l'equiv in Windows) e quindi non sarà in grado di essere referenziato da progetti A e B.

In mancanza di questo, andare all'interno della vostra $ HOME / .m2 / repository e verificare installato .jar / .pom per il progetto c l'attuale. È percorso di directory sarà conforme alla sua coordinate Maven (ad esempio com / mydomain / ge / child_project_c / 0.0.1-istantanea). Assicurarsi che il vaso ha le classi che ci si aspetta all'interno di esso e assicurarsi che il pom installato accanto sembra che l'uno nella vostra repository di origine.

Altri suggerimenti

Non è possibile fare un commento ancora, ma non dovrebbe m2eclipse progetti determinazione dello spazio di lavoro, invece di installarli al repository locale e risolverli da lì?

ho scoperto, che mvn è piuttosto pignoli su quello che è scritto all'interno build.properties! Ho affrontato lo stesso problema e ha dovuto fare in modo che

  1. Sia source.. = src/ e output.. = bin/ siano correttamente inseriti.
  2. bin.includes = META-INF,/ e . siano correttamente inseriti.

Dopo che ho riparato questo, mvn nuova installazione ha funzionato come un fascino! @whaley, grazie per il suggerimento con $HOME/.m2/repository in realtà mi ha portato a vedere le i file sono stati davvero manca nel vaso, per i motivi di cui sopra!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top