2012-03-23 170 views
18

我有一個在後端使用JPA 2.0的Maven構建的web應用程序。 JPA提供者是EclipseLink 2.3.2。爲什麼NetBeans IDE看不到生成的源代碼?

當我建項目(和它部署運行成功),它建立在目錄

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

的JPA元模型然而,IDE沒有看到其中定義的類。到處都是感嘆號的小紅點。但是,我可以導航到Projects窗口中的文件,並打開生成的源文件。

這是否發生在其他人身上,有誰知道一種解決方法?

UPDATE:

作爲一種變通我發現,我可以退出NetBeans中,刪除了NetBeans緩存目錄,然後重新啓動。這迫使NetBeans重建緩存,然後這些類再次可見。我應該向NetBeans錯誤跟蹤器提交錯誤嗎?我不能拿出一個測試案例來實現它,但它經常使用。

+0

在eclipse中,您可以定義多個源文件夾 - 嘗試添加它。 – 2012-03-24 13:42:47

+3

是的,這是一個錯誤,Netbeans應該自動刷新。 – eskatos 2012-12-06 22:38:37

+0

在2015年,Netbeans 8.0.2仍然是[bug](https://netbeans.org/bugzilla/show_bug.cgi?id=218658)。不知道爲什麼每個人都使用Eclipse或Intellij。 – 2015-09-05 15:58:01

回答

2

有時Netbeans有麻煩刷新。也許乾淨並重建項目並重新啓動Netbeans?

+1

我試過這個,仍然一樣,我甚至在我的proyect的pom目錄中嘗試過「mvn clean install -Dmaven.test.skip = true」,沒有任何結果。 – 2016-10-31 17:14:47

4

如果你去到項目屬性/來源有關於這個記:你需要在

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

其中FOOBAR是你的插件的名稱產生源。

enter image description here

+0

我使用「Example_」命名法查看生成的源文件和所有文件,但只能在Netbeans的文件選項卡中找到,但它們仍未被我的ide檢測到要導入或用於我的java文件中,並且被檢測爲在我的proyect選項卡中被忽略。請幫助。 – 2016-10-31 17:13:16

3

閱讀@jeqo的答案後,我如果測試通過手動重命名:

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

會做出Nebeans差別(我使用Ubuntu的16.04 V8.2)。

一切都像一個魅力。

我然後修改了POM文件如下:

1)去掉了 「org.hibernate作爲:hibernate.jpamodelgen」 依賴性。

2)配置了Maven的編譯器插件如下:

<plugin> 
    <groupId>>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <compilerArgument>-proc:none</compilerArgument>   
    </configuration> 
    </plugin> 

3)加入下列插件與配置

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

這個配置是直接從休眠JPA靜態元模型生成文檔頁面除了下面的行:

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

這行簡單地生成以maven插件名稱命名的目錄中的元模型。從這一點來看,我在設計時得到了所有Netbeans引用,就好像生成的類位於src目錄子樹中一樣。

希望這有助於

Ĵ

0

如果您正在使用JAXWS然後確保你一個<sourceDestDir>節點添加到相應的POM的JAXWS插件「神器」的<configuration>部分。例如:

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

如上所述,如netbeans所述,您必須使用帶有「插件」名稱的generate-sources路徑。希望上面清楚了什麼是「插件名稱」的含義,以及如何讓一個人將jaxws放到netbeans需要的地方。顯然,每個插件的「配置」部分都會有所不同... jaxws需要節點<sourceDestDir>,其他插件可能會使用其他插件。