2012-03-23 12 views
18

Ho un'app Web basata su Maven che utilizza JPA 2.0 nel back-end. Il provider JPA è EclipseLink 2.3.2.Perché l'IDE NetBeans non visualizza le origini generate?

Quando costruisco il progetto (e che schiera viene eseguito correttamente) si costruisce il meta-modello JPA nella directory

${basedir}/target/generated-sources/annotations/ 

Eppure l'IDE non vede le classi definite lì. Piccoli punti rossi con un punto esclamativo ovunque. Tuttavia, posso navigare verso tali file nella finestra Progetti e aprire i file di origine generati.

Questo succede a chiunque altro e qualcuno sa come risolvere?

UPDATE:

Come un work-around ho scoperto che posso uscire NetBeans, eliminare la directory NetBeans cache, quindi riavviare. Ciò impone a NetBeans di ricreare la cache e quindi le classi diventano nuovamente visibili. Devo inviare un bug al bug tracker di NetBeans? Non riesco a trovare un caso per farlo accadere, ma lo fa abbastanza spesso.

+0

In eclissi è possibile definire più di una cartella di origine: provare ad aggiungerla. –

+3

Sì, questo è un bug, Netbeans dovrebbe aggiornarsi automaticamente. – eskatos

+0

questo è ancora un [bug] (https://netbeans.org/bugzilla/show_bug.cgi?id=218658) nel 2015 con Netbeans 8.0.2. Mi chiedo perché tutti usano Eclipse o Intellij. –

risposta

2

A volte Netbeans ha problemi di aggiornamento. Forse pulire e ricostruire il progetto e riavviare Netbeans?

+1

Ho provato questo e ancora lo stesso, ho anche provato "mvn clean install -Dmaven.test.skip = true" nella directory pom del mio proyect e nulla. –

4

Se vai a proiettare le proprietà/fonti v'è una nota su questo: è necessario generare fonti sotto

${basedir}/target/generated-sources/FOOBAR 

dove FOOBAR è il nome del plugin.

enter image description here

+0

Vedo le mie origini generate e tutti i miei file con la nomenclatura "Example_" ma solo nella scheda dei file di Netbeans, tuttavia non vengono ancora rilevati da my ide per essere importati o utilizzati nei miei file java e vengono rilevati come ignorato nella mia scheda di progetto. Aiuto di Pls. –

3

Dopo aver letto @jeqo risposta, ho provato se, rinominando manualmente:

"${project.build.directory}/generated-sources/annotations" to ".../generated-sources/hibernate-jpamodelgen" 

sarebbe fare la differenza per Nebeans (sto usando v8.2 su Ubuntu 16.04).

Tutto ha funzionato come un fascino.

Ho poi modificato il file pom come segue:

1) ha rimosso il "org.hibernate: hibernate.jpamodelgen" dipendenza.

2) configurato l'esperto-compiler-plugin come segue:

<plugin> 
    <groupId>>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <compilerArgument>-proc:none</compilerArgument>   
    </configuration> 
    </plugin> 
  • Queste due passi è quello di fare in modo che il hibernate-jpamodelgen non viene eseguito con il pilota automatico solo con l'aggiunta in la dipendenza dal progetto lista.Si prega di fare riferimento al JPA Static MetaModel Generator doc.

3) aggiunto il seguente plugin con configurazione

<plugin> 
    <groupId>org.bsc.maven</groupId> 
    <artifactId>maven-processor-plugin</artifactId> 
    <version>3.2.0</version> 
    <executions> 
     <execution> 
     <id>process</id> 
     <goals> 
      <goal>process</goal> 
     </goals> 
     <phase>generate-sources</phase> 
     <configuration> 
      <processors> 
      <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor> 
      </processors> 
      <defaultOutputDirectory>${project.build.directory}/generated-sources/hibernate-jpamodelgen/</defaultOutputDirectory> 
     </configuration> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-jpamodelgen</artifactId> 
     <version>5.2.9.Final</version> 
     </dependency> 
    </dependencies> 
    </plugin> 

Questa configurazione è direttamente dalla pagina di documentazione di Hibernate JPA Statico Metamodel Generator tranne che per la seguente riga:

<defaultOutputDirectory>${project.build.directory}/generated-sources/hibernate-jpamodelgen/</defaultOutputDirectory> 

Questa riga genera semplicemente il metamodello nella directory chiamata dopo il nome del plug-in maven. Da questo punto, ho ottenuto tutti i riferimenti a Netbeans che lavorano in fase di progettazione come se le classi generate si trovassero nella sottostruttura della directory src.

Spero che questo aiuti,

J

0

Se si utilizza jaxws quindi assicurarsi che si aggiunge un nodo <sourceDestDir> alla sezione <configuration> dei jaxws plug-in "artefatto" nel pom appropriata. Ad esempio:

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxws-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>dojaxws</goal> 
        </goals> 
        <configuration> 
         <sourceDestDir>${project.build.directory}/generated-sources/jaxws</sourceDestDir> 
         .... 
        </configuration> 
       </execution> 
      </executions> 
      <configuration> 
       <wsdlDirectory>src/main/resources/com/mystuff/ws</wsdlDirectory> 
       <bindingDirectory>src/jaxws/binding</bindingDirectory> 
       <target>2.0</target> 
      </configuration> 
     </plugin> 

Come spiegato in precedenza e come notato da netbeans, è necessario utilizzare il percorso generare sorgenti aggiunto con il nome di "plug-in". Spero che quanto sopra chiarisca cosa significa "nome del plug-in" e in che modo esattamente si suppone che i jaxws mettano le sorgenti generate dove i netbeans hanno bisogno che siano. Chiaramente la sezione "configurazione" sarà diversa per ogni plugin ... Il nodo <sourceDestDir> è necessario per jaxws, altri plugin potrebbero usare qualcos'altro.

Problemi correlati