Mój obecny zespół ustandaryzował NetBeans dla całego naszego rozwoju Java i używamy wygenerowanych przez NetBeans plików ANT jako naszego oficjalnego procesu kompilacji.Pliki kompilacji NetBeans nigdy nie są poprawne
Ale pliki są zawsze błędne.
Różni członkowie zespołu używają różnych wersji NetBeans i ewidentnie generują nieco inne pliki "build-impl.xml". Tak więc, po uruchomieniu IDE, NetBeans zregeneruje dowolny z tych plików, które uzna za nieprawidłowe lub nieaktualne.
Ale wtedy (ponieważ te pliki są sprawdzane w formancie źródłowym, jako nasze oficjalne skrypty budujące) pliki kompilacji są zwykle niezsynchronizowane z repozytorium. Jeśli sprawdzę automatycznie wygenerowane zmiany z mojego komputera, to jakiś inny frajer w moim zespole będzie musiał nadpisać własną lokalną kopię skryptów budujących, powodując, że NetBeans złoży skargę, że pliki są nieaktualne i muszą być zregenerowany.
Przeważnie jest to irytujące. Zarówno fałszywe różnice w automatycznie generowanych skryptach budujących dodają wiele szumu do przesiewania za każdym razem, gdy programista wykonuje checkin. Lub IDE stale narzeka na zewnętrzne modyfikacje skryptów budujących. Nie możesz wygrać.
Ale mam też ciągłe dokuczliwe uczucie, że nikt nie ma w pełni poprawnego scenariusza budowy, a my wprowadzamy indeterminizm w cały proces budowy.
O ile mogę powiedzieć, istnieją dwa możliwe rozwiązania tego problemu:
1) standaryzacja na konkretnej wersji NetBeans. Nie pozwalaj ludziom na aktualizację, dopóki nie podejmiemy decyzji, jako zespół, aby to zrobić. I nie pozwól, aby ludzie przechodzili z tyłu w starych wersjach. Jeśli wszyscy w drużynie używają tej samej wersji NB, wtedy te problemy (prawdopodobnie) znikną.
2) Nie zaznaczaj skryptu "build-impl.xml" w kontroli kodu źródłowego. Jest automatycznie generowany przez IDE i dlatego jest artefaktem plików "build.xml" i "project.xml". Wygenerowane pliki (takie jak pliki ".class") nie powinny być sprawdzane pod kontrolą źródła, ale powinny być ponownie generowane podczas procesu kompilacji. Sprawdź, jaki mechanizm wykorzystuje NetBeans do wygenerowania pliku "build-impl.xml" i uruchom ten sam mechanizm na naszym serwerze kompilacji. Czy to oznacza, że nasz serwer kompilacji musiałby polegać na GUI NetBeans? Mam nadzieję, że nie.
Co wy myślicie? Jaki jest właściwy sposób rozwiązania tego problemu?