1. 程式人生 > 其它 >web專案都需要一些特定於環境的

web專案都需要一些特定於環境的

每個web專案都需要一些特定於環境的配置。資料庫憑據、根url、SMTP設定等等。這是一個關於堆疊溢位的反覆出現的問題,我在這個主題上看到了很多不同的問題,這裡我將描述一個我認為最好的問題。

  • 將所有這些屬性放在.properties檔案中(例如application.properties)
  • 擁有這個應用程式。屬性位於Web應用程式之外。它不是與構建捆綁在一起的。
  • 提供指示檔案所在位置的命令列選項。例如-Dconfig.location=/home/you/config
  • 在應用程式啟動時(通常在ServletContextListener中),載入檔案並將其放到對映中。可以是java.util.Properties或HashMap
  • 春季使用者-使用<context:property-placeholder-configurer location="file://${config.location}/application.properties"。其他框架可能會有一些機制來載入這些全域性屬性。
  • 在SCM儲存庫中儲存一個骨架屬性檔案。它應該包含所有的屬性,但是它們的值是無關的--它們在每個環境上都會發生變化。
  • OPS團隊可能會受益於版本化不同的環境配置(生產、Qa、Stage),因此可以建立一個單獨的/config資料夾/子專案,並且可以將所有特定於環境的屬性儲存在那裡。在新增屬性時,開發人員應該相應地更新所有檔案。
  • 不依賴於環境但對於專案仍然是全域性的屬性可以儲存在專案中(maven的src/main/resources),並提交給SCM。它們可以在啟動時與外部屬性合併(即在記憶體中合併)。
  • 大多數可外化的屬性可以有合理的預設值--公司的smtp伺服器、資料庫驅動程式等。它們可以放在application-defeault.properties在專案中,外部檔案可以覆蓋它們。這只是一種選擇--如果要在儲存庫中提交一個具有這些合理預設值的檔案,並且每個環境都使用該檔案作為基礎,那麼它實際上是相同的

開發人員可以輕鬆地以這種方式執行他們的專案。作業系統可以很容易地在不同的環境上部署構建。建造仍然與環境無關。

https://www.imdb.com/list/ls502132679/

每個IDE都生成特定的專案/配置/構建檔案。Eclipse生成.project和.classpath以及.set目錄。IntelliJIDEA有它的.iml檔案。在原始碼管理方面(svn、cvs、git等),如何處理這些檔案一直是一個問題。

普遍接受的做法是將它們新增到SCM忽略列表中(例如,SVN:NOILE)。為什麼?

  • 專案沒有意識到它是在哪個IDE中開發的。每個團隊成員都可以使用他們自己選擇的IDE
  • 不存在將絕對路徑配置偷偷匯入儲存庫的危險。
  • 任何開發人員都不能覆蓋其他開發人員的本地設定。

https://www.douban.com/note/814238292/

這種做法是有道理的,但它有一個主要的缺點-建立一個專案的複雜性必須重複每次。換句話說,您不能在簽出之後立即開始開發--您必須配置大量的東西--在本地伺服器上部署、校驗樣式配置、外掛配置最好使用構建工具而不是IDE構建過程(ant、maven)。但除此之外,您還應該有一個單步開發環境設定(除了安裝資料庫/搜尋引擎/等等)。

那怎麼做呢?我知道這是一個不受歡迎的建議,但是:將IDE專案檔案提交到儲存庫中。一旦一個成員成功地進行了本地設定,就應該提交檔案,以便其他所有人都可以簽出/更新,並讓專案執行。我相信每個人都經歷過幫助為新團隊成員建立專案的麻煩,或者在本地機器上得到新的檢查(由於SCM錯誤、OS重新安裝等等)。

https://www.jianshu.com/p/6f62febb982e

當然,你不能什麼都提交-看看上面的清單,看看為什麼這可能是錯誤的。有一件事要記住:永遠不要走絕對的道路。每件事都必須是專案相關的。如果出於某種原因(例如,使用FileSync而不是WTP部署,在Eclipse中),您需要一個外部路徑-將它放置在一個變數wiingeclipse中並使用它。

至於上面列表中的另外兩個專案--提交專案檔案並不與特定IDE相關聯。它使它可以立即用於該IDE。在同一個專案中擁有.project和.iml檔案沒有問題。只是他們不會被每個人所利用。但無論如何,這個專案的任何一部分都不為每個人所用。關於當地的偏好--不要去做那些。確定專案執行所需的IDE檔案,忽略其餘檔案。例如,Eclipsewtp專案將需要提交的分面專案設定-即“.set/…”.facet.core.xml“。具有一致的格式規則需要一個.prefs檔案。但是BPM視覺化外掛的檢視設定是開發人員首選的問題--忽略它們。

最後,在專案根目錄中有一個.txt檔案,用幾行描述如何建立工作環境。前面提到的IDE變數(如果需要的話),所需的IDE外掛,安裝所需的軟體(例如資料庫)等等。但是它應該是最小的-畢竟我們正在嘗試一個(幾乎)一步開發環境的設定。

更新:許多人建議Maven解決所有這些問題。例如,Eclipse-maven整合幾乎已經足夠好了,但是還不夠好。你還得執行一些手工任務。M2eclipse不允許部署。M2eclipse-WTP確實如此,但遺憾的是,它並不總是起作用。啟用專案方面不是Maven所做的事情。還有更多。Maven是一個巨大的改進,但在許多情況下還不夠。