2009-06-04 55 views
3

我們有很多自動生成的類,其中大多數是Axis2存根,骨架等。對於一些複雜的wsdls,Axis2生成一個TON的java-beans,存根等等。我相信在使用自動生成時也有其他情況。一個放置自動生成代碼的好地方?

現在我們把它們當作我們代碼庫的其他第一類成員,並且它們存儲在相同的包中。

但是做重構時,清理等它變得難以淘汰的是從這些自動生成的類來的警告。例如,如果我試圖清理代碼以便使用Java1.5泛型,那麼沒有什麼好方法可以知道這些違規類中有多少是我們自己生成的類。

我應該將這些自動生成的零件分成不同的包嗎?你們如何將這些工件存儲在存儲庫中?

編輯: 我看到下了不少答案,「在構建過程中產生」。雖然我看到了這樣做的好處,但我不太清楚如何從存儲庫簽入中脫身。

我的代碼有一些類和我編譯時的依賴,發展過程中構建一個「CTRL-S」的日食。我們使用ant腳本來生成編譯,運行測試並生成可交付成果。

回答

5

您可以保留相同的包,但使用不同的源文件夾(類似generated-src),這就是我們所做的。實際上,我一直在關注將源代碼存儲庫中生成的代碼保存的整個想法。我們這樣做是爲了方便項目中的其他開發人員,但在構建過程中重新生成源代碼通常很有意義。如果這個生成的代碼不太可能改變,那麼使用一個單獨的項目並生成一個jar可能更實用。

6

我把這些文件放到他們自己的項目中。這樣,我可以在一個地方添加構建文件,所需的所有補丁等,並關閉生成的代碼的所有警告。

+0

也將花費你的編譯時間相當多 – 2009-06-04 12:09:14

+0

好主意,它可以節省一些製作時間與需要複雜的物體產生。對於簡單的物體,它沒有太大的時差 – Salandur 2009-06-04 12:19:30

1

對於每一組生成的工件的,創建一個新的項目,其執行產生,然後向上束僞影成JAR和源ZIP文件,然後從您的應用引用它們。保持事物的美好和獨立,並強調生成的構件不會被IDE更改。

2

如果你他們檢查到源控制系統,。讓它們通過構建步驟重新生成。如果它們是從WSDL生成的,請檢入WSDL,而不是生成的代碼。

我建議讓構建步驟爲生成的代碼生成一個完全獨立的.jar,然後刪除源文件,以使維護人員儘可能不可能修改自動生成的源代碼。

這樣,你的重構活動將看到自動生成的代碼像一個第三方庫,而不是源被操縱。

0

使用maven和axistools-maven-plugin,生成的源文件位於「目標」目錄中不同的源文件夾中。這個目標目錄是Maven生成所有文件和東西的地方,所以它可以被清理。
這非常令人滿意,因爲生成的文件也出現在IDE中的其他源文件夾中。

7

的最佳實踐摘要:

  • 讓它重複
    • 創建生成的代碼作爲構建過程的一部分。
    • 請勿將生成的代碼檢入源代碼管理。 (做檢查在源。例如WSDL)
  • 保持生成的代碼從託管代碼
    • 使用用於產生輸出不同的源文件夾分開。
    • 交付一個單獨的.jar,以便生成的代碼成爲依賴項。
    • 考慮使用不同的IDE項目(或Maven模塊)