2011-01-21 62 views
4

我正在寫一個Java應用程序,它需要大量存儲在許多枚舉類型中的靜態數據。因爲我想用一種用戶友好的方式來定製這些數據,例如使用xml或json文件,但我不允許直接使用枚舉來完成它,所以我正在尋找一種方法來優雅地完成它。Java預處理階段

也許一個很好的解決辦法是有一個獨立的Java程序,它讀取XML文件並生成Java源代碼被然後用源的剩餘部分進行編譯。我的doubs是如何以獨立的方式自動化這個過程(例如ant?),以及如何將它與eclipse無縫集成,以便在我正在處理項目時自動完成。類似於我所做的任何事情看起來已經存在?任何建議來解決我的問題?

謝謝!

+0

這些枚舉將如何使用?它們與代碼的其他部分有什麼關係? – Maxym

+0

您可以使用Compiler API並在運行時加載它們。 –

+0

由於這是一款遊戲,因此它們被用來定義許多特徵,例如法術或單位或建築物等等。到目前爲止(我還遠遠沒有結束),我已經達到了20-25枚枚舉。我可以滿足於硬編碼枚舉常量,而忽略每個參數,但我寧願擁有一些配置文件中的一切。 – Jack

回答

1

創建一個項目,其唯一的工作就是生成你的源代碼的Java。 確保生成階段由Ant完成。

現在,包裝這個項目到Eclipse和使用自定義Ant構建,調用目標在現有build.xml

這是我們的開發基礎設施的一個標準部分,所以這肯定的作品。

2

如果項目和整體結構在某種程度上是固定的(哪些變化最大的是屬性的值),您可以考慮爲每個項目定義一個條目,並讓枚舉將它自己的常量與數據從外部源(XML/JSON)讀取 - 在加載時或按需提供。

0

你有沒有考慮,包括在你的jar的XML文件,並加載它們在啓動到使用枚舉作爲一個關鍵的地圖?

1

你可以有螞蟻與Eclipse無縫集成才達到的是:

在Eclipse開放源項目屬性,進入「建設者」,單擊「新建...」,選擇「Ant構建」,選擇構建文件,轉到「目標」選項卡並點擊「設置目標...」進行「自動生成」。選擇所需的目標並完成。每次保存源文件時都會運行目標(如果選擇「自動生成」)。

1

你可以編寫一個生成代碼的maven插件。有一些插件可以做到這一點。它不會自動工作,但可以將它連接到標準的Maven生命週期,以便在編譯之前執行它。 我剛剛做了類似的事情。