承認,這聽起來不像是一個最佳實踐,但讓我解釋一下。在構建過程中,我們需要將內部版本號和系統版本粘貼到一個類中,其唯一目的是包含這些值並使其可訪問。螞蟻搭建期間修改代碼的最佳做法
我們的第一個想法是使用系統屬性,但由於部署環境的不穩定(另一種說法是「系統管理員正在做怪異的令人毛骨悚然的事情」),我們希望將它們硬編碼。
基本上我看到4種可能性,以實現它的螞蟻:
使用
<replace>
令牌上的類這種方法的問題是,該文件被改變了,所以你必須在編譯後使用
<replaceregexp>
... sooo醜,我不想用正則表達式觸摸源代碼。加上時間依賴性。副本的文件,使更換副本,編譯複製,刪除複製
一個人有想到序列 - 原班是爲了通過拷貝覆蓋到先編譯。時間依賴性也很糟糕。
複製文件,替換原來的令牌,編譯,使用複製
相同的時間相關性問題取代原來的染色,除非嵌入在編譯目標。這也是醜陋的,因爲我們所有的構建文件都使用相同的導入編譯目標。
在構建腳本/存儲從頭開始創建該文件的源路徑
外的文件是比前三的改善,因爲沒有時間上的依賴關係,但是編譯器/ IDE很不爽因爲它沒有注意到課堂。紅色標記令人不安。
對替代品有什麼看法?
有沒有這方面的最佳做法?
我當然希望我錯過了一個完全理智的方法。
謝謝
編輯 我們結束了使用清單存儲在Implementation-Version
屬性的版本號和系統版本,unsing MyClass.class.getPackage().getImplementationVersion()
。我發現這個解決方案是this thread的答案之一,它被髮布在andersoj的評論中
相關的我的一個問題:http://stackoverflow.com/questions/690419/build-and-version-numbering-for-java-projects-ant-cvs-hudson – andersoj 2011-05-12 17:11:50
@andersoj:很好的資源,謝謝 – kostja 2011-05-12 17:21:00