Maven buduję wokół klastra amatorskiego, słabo napisanego i szczerze - prymitywnego kodu C / C ++ (czyli trochę C, trochę C ++). Problem w tym, że jest ich obecnie dużo w obiegu i nie można ich łatwo wymienić. Zbudowanie go wymaga dużej wiedzy plemiennej (musisz przejść od kostki do kostki tylko po to, aby dowiedzieć się, jak skompilować / zbudować różne części), a wypuszczenie jest totalnym koszmarem. (Nie - nie zamierzam tego przepisywać, proszę nie pytać) Moje pytanie brzmi - czy powinienem użyć maven-native-plugin
do zastąpienia wielu krótkich plików makefile, czy exec-maven-plugin
po prostu je wykonać? Miałem do tej pory całkiem niezłe doświadczenie z tym ostatnim, robiąc .NET i nie wiem, czy powinienem zainwestować we native
wtyczkę, czy zostać z exec
? Gdybyś miał doświadczenie z „Mavenizing” C / C ++, z chęcią zasięgnę porady.
źródło
Odpowiedzi:
Bardzo polecam wtyczkę maven-nar-plugin . Uważam, że pod wieloma względami jest lepszy od innych rozwiązań. Nie wymaga wypisywania plików źródłowych, obsługuje wiele systemów operacyjnych i architektur, obsługuje testy jednostkowe i integracyjne oraz generalnie postępuje zgodnie z „maven way”. Wprowadza nowy rodzaj opakowania - NAR, czyli „archiwum natywne”, które zawiera artefakt, na którym Ci zależy (.dll, .so, .a, .exe itp.), Ale także metadane, nagłówki itp. W pliku sposób, który ma sens.
Wymaga to trochę pracy z góry, aby spakować oprogramowanie innych firm do NAR, ale jest to dość proste. Gdy staną się one NAR, po prostu użyj normalnego mechanizmu zależności Mavena, aby się z nimi połączyć, na przykład:
<dependency> <groupId>cppunit</groupId> <artifactId>cppunit</artifactId> <scope>test</scope> </dependency>
Jedną wadą jest to, że nie wydaje się być aktywnie utrzymywany, ale jest w pełni funkcjonalny i jest dość imponującym przykładem tworzenia wtyczek Maven.
źródło