Korzystanie z Maven dla projektów C / C ++

85

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-plugindo zastąpienia wielu krótkich plików makefile, czy exec-maven-pluginpo 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 nativewtyczkę, czy zostać z exec? Gdybyś miał doświadczenie z „Mavenizing” C / C ++, z chęcią zasięgnę porady.

Bostone
źródło
Mam zamiar tego spróbować. Jak widzę, jest nadal utrzymywany i w międzyczasie przeniósł się tutaj: github.com/sonatype/maven-nar-plugin
espakm

Odpowiedzi:

90

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.

Pojedynczy strzał
źródło
Dzięki za wskazówkę - na pewno to sprawdzę!
Bostone
Przyjmę to jako odpowiedź - to rzeczywiście wydaje się być lepsze niż maven-native-plugin
Bostone
Powodzenia. Jedna uwaga - otrzymałem dziś rano powiadomienie (jakie to przypadkowe), że błąd, który zgłosiłem rok temu, został dziś rozwiązany - wydaje się, że konserwacja zareagowała.
SingleShot,
2
Wygląda na to, że wtyczka maven-nar-plugin jest obecnie obsługiwana przez sonatype: Issues.sonatype.org/browse/NAR
tommy chheng
1
używając przykładów nar-maven-plugin, wykonaj następujące czynności, aby zadziałał: pakiet mvn - wygeneruje pakiety testowe, a następnie będzie można uruchomić test zależny od NarSystem
serup