2015-10-05 61 views
4

我創建了一個小型項目[0]在受控環境中重現錯誤。事實上,我使用jenkins來構建我的項目,一個很大的項目,我想做一些平行的構建。請讓我以圖形Delphi分佈式構建失敗

[MyBasicPackage] -----> [MyPackageTester] ------> [MyBasicApp] 
     . 
     . 
     +-----> [...] 
     +-----> [...] 

這是我的[0],我對Spring容器註冊類TMyUnitMyBasicPackage)進行測試所做的組織。我構建它並生成.dcu,.bpl等。 第二階段我建立我的MyPackageTester需要MyBasicPackage。最後,我構建了需要MyPackageTester的應用程序。到現在爲止還挺好。

當我嘗試建立我MyBasicPackage,說PC-00,拿到神器,並嘗試建立了MyPackageTesterPC-06(同拱,相同的操作系統,相同的IDE,同樣spring4d版本),和一個不錯的錯誤出現:

Unit TMyUnit was compiled with a different version of Spring.Container.Registration 

所以,更新我在兩臺機器上spring4d(PC-00PC-06),並建立他們。運行...並出現相同的錯誤。 檢查庫路徑選項(C:\ Program Files文件(x86)\ Embarcadero \ Studio \ 14.0 \ Componentes \ spring4d \ Library \ DelphiXE6 \ Win32 \ Debug),刪除dcu文件並在兩臺機器上再次構建它們,錯誤。 從複製dcu文件PC-00PC-06避免任何類型的系統配置並出現相同的錯誤。

也許我正在嘗試做一些迄今爲止不可能做到的事情。我搜索了幾天沒有運氣。

任何想法?

請隨時叉子或拉入請求的例子)

問候

[0] https://github.com/graguirre/DelphiDepencyExample

回答

2

你的情況,你需要建立與Spring.Core運行時包。這不僅會防止這個錯誤,而且你的代碼將會真正起作用。

如果你不這樣做,那麼所有的模塊都會保存你正在使用的GlobalContainer實例的版本,並且什麼都不會起作用。

+0

由於任何原因,我無法動態鏈接到IDE中,所以我創建了一個makefile並且工作流暢。我創建了第三方單元目錄來保存spring的DCU,並且只需將-LUSpring.Core添加到我的構建選項編譯器中,即可動態鏈接Spring.Core的lib。我已經更新了這個解決方案到我的github repo https://github.com/graguirre/DelphiDepencyExample –

+0

可以被源重新創建的二進制文件不應該存儲在VCS中,但是不管。 –

+0

我會嘗試結帳春天,建立它,並與我的小項目鏈接。 –

2

也許一個解決方案是把你所有的庫放在一個集中的倉庫中,然後把它們拖拽到你的項目中。它應該解決不同版本的錯誤。

+0

這將解決編譯錯誤,但不是功能缺陷。 –

+0

如何使用運行時軟件包構建另一個軟件包? –

+0

將軟件包添加到dpk中的requires子句 –