2012-03-23 9 views
18

Ich habe eine von Maven erstellte Web-App, die JPA 2.0 am Backend verwendet. Der JPA-Provider ist EclipseLink 2.3.2.Warum sieht NetBeans IDE die generierten Quellen nicht?

Als ich das Projekt erstellen (und es setzt läuft erfolgreich) baut den JPA Metamodell im Verzeichnis

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

Doch die IDE nicht sehen, die dort definierten Klassen. Kleine rote Punkte mit einem Ausrufezeichen überall. Aber ich kann zu diesen Dateien im Projekte Fenster navigieren und die generierten Quelldateien öffnen.

Ist dies jemand anderem bekannt und weiß jemand, wie man es beheben kann?

UPDATE:

Als Behelfslösung ich entdeckt habe, dass ich NetBeans verlassen kann, das NetBeans-Cache-Verzeichnis löschen, dann neu starten. Das zwingt NetBeans, den Cache neu zu erstellen, und die Klassen werden wieder sichtbar. Soll ich einen Bug an den NetBeans Bug Tracker senden? Ich kann mir keinen Testfall ausdenken, um es zu ermöglichen, aber es passiert ziemlich oft.

+0

In Eclipse können Sie mehr als einen Quellordner definieren - versuchen Sie es hinzuzufügen. –

+3

Ja, das ist ein Fehler, Netbeans sollte automatisch aktualisiert werden. – eskatos

+0

Dies ist immer noch ein [Bug] (https://netbeans.org/bugzilla/show_bug.cgi?id=218658) im Jahr 2015 mit Netbeans 8.0.2. Ich frage mich, warum jeder Eclipse oder Intellij benutzt. –

Antwort

2

Manchmal hat Netbeans Probleme mit der Aktualisierung. Vielleicht das Projekt säubern und neu erstellen und Netbeans neu starten?

+1

Ich habe das versucht und immer noch das gleiche, ich habe sogar versucht "mvn clean installieren -Dmaven.test.skip = true" in meinem proyect Pom-Verzeichnis und nichts. –

4

Wenn Sie gehen Eigenschaften zu projizieren/Quellen gibt es eine Anmerkung dazu: Sie benötigen Quellen unter

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

wo FOOBAR ist der Name Ihres Plugins zu generieren.

enter image description here

+0

Ich sehe meine generierten Quellen und alle meine Dateien mit der Nomenklatur "Example_", aber nur in der Dateiregisterkarte von Netbeans, aber sie werden immernoch nicht von meiner IDE erkannt, um importiert oder in meinen Java-Dateien verwendet zu werden ignoriert in meinem Projekt-Tab. Bitte helfen. –

3

Nach @jeqo Antwort zu lesen, die ich getestet habe, wenn durch manuelles Umbenennen:

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

einen Unterschied zu Nebeans machen würde (ich verwende v8.2 auf Ubuntu 16.04).

Alles funktionierte wie ein Charme.

I modifiziert dann die POM-Datei wie folgt: Abhängigkeit:

1), um die "hibernate.jpamodelgen org.hibernate" entfernt.

2) konfiguriert ist, die Maven-Compiler-Plugin wie folgt:

<plugin> 
    <groupId>>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <compilerArgument>-proc:none</compilerArgument>   
    </configuration> 
    </plugin> 
  • Diese beiden Schritte, um sicherzustellen, dass die Hibernate-jpamodelgen nicht nicht nur auf Autopilot ausführen, indem es die Zugabe in die Projektabhängigkeit Liste.Bitte beachten Sie JPA Static MetaModel Generator doc.

3) hinzugefügt, um das folgende Plugin mit Konfigurations

<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> 

Diese Konfiguration ist direkt aus der Hibernate JPA Static Metamodel Generator Dokumentationsseite mit Ausnahme der folgenden Zeile:

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

Diese Zeile erzeugt einfach das Metamodell in dem Verzeichnis, das nach dem Maven-Plugin-Namen benannt ist. Von diesem Punkt an habe ich alle Netbeans-Referenzen zur Entwurfszeit aktiviert, als ob die generierten Klassen sich im Unterverzeichnis src befinden würden.

hoffe, das hilft,

J

0

Wenn Sie jaxws dann stellen Sie sicher, fügen Sie einen <sourceDestDir> Knoten zu dem <configuration> Abschnitt der jaxws Plug-in "Artefakt" in der entsprechenden pom verwenden. Zum Beispiel:

 <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> 

Wie oben erläutert und wie von Netbeans erwähnt, müssen Sie die generate-Quellen Pfad mit dem „Plug-in“ Namen angefügt verwenden. Hoffentlich klärt das Obige auf, was "Plug-In-Name" bedeutet und wie genau man jaxws erreichen soll, um die generierten Quellen dorthin zu bringen, wo Netbeans sie brauchen. Offensichtlich wird der "Konfigurations" -Abschnitt für jedes Plugin anders sein ... Der Knoten <sourceDestDir> wird für Jaxws benötigt, andere Plugins können etwas anderes verwenden.