2010-10-23 16 views
5

Byłem użytkownikiem od dawna systemu Make build, ale zdecydowałem się rozpocząć naukę systemu budowania Maven. Podczas gdy czytałem większość dokumentacji online, żadna nie wydaje mi się analogią, której szukam. Rozumiem cykl życia systemu, ale nie widzę żadnego odniesienia do kompilacji zależności kroków. Na przykład chcę wygenerować gramatykę JFlex w ramach etapu cyklu życia kompilacji. Obecnie nie widzę sposobu, aby uczynić ten krok etapem wstępnej kompilacji. Dokumentacja wydaje się być ograniczona w tym zakresie. Ogólnie rzecz biorąc, wydaje się, że koncepcja zależności kroków jest zapakowana w Mavena i wymaga wtyczki do każdej zmiany. Czy tak jest? Czego mi brakuje, ponieważ obecnie system budowania Mavena wydaje się bardzo ograniczony w sposobie konfigurowania kroków kompilacji.Przeprowadzka do Maven z GNUMake

Odpowiedz

4

Możesz zrobić wszystko w Maven. Zasadniczo ma domyślny sposób robienia każdej rzeczy, a następnie możesz włączyć i przesłonić, jeśli chcesz zrobić coś wyjątkowego. Czasami potrzeba dużo przepełnienia stosu i drapania głowy, aby to rozgryźć.

Istnieje nawet oficjalny JFlex Maven plugin.

Gdy tylko jest to możliwe, znajdź kogoś, kto zrobił wtyczkę Mavela i rób to, co chcesz. Nawet jeśli nie jest w 100% poprawne, może przynajmniej dać ci pomysł, jak zmusić maven'a do zrobienia czegoś.

Minimalna konfiguracja

Konfiguracja ta generuje kod Java parsera dla wszystkich plików gramatyki ( .jflex * .jlex * .lex, .flex) znalezionych w src/main/JFLEX/i jego podkatalogi. Nazwa i pakiet wygenerowanego kodu źródłowego Java są zdefiniowane w gramatyce. Wygenerowany kod źródłowy Java jest umieszczany w docelowym/generowanym-źródle/jflex, w podkatalogach zgodnych z konwencją Java dotyczącą nazw pakietów. pom.xml

<project> 
    <!-- ... --> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>de.jflex</groupId> 
     <artifactId>jflex-maven-plugin</artifactId> 
     <version>1.6.0</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    <!-- ... --> 
    </build> 
    <!-- ... --> 
</project> 

to czuje się jak w sposób maven do rzeczy. Umieść swoje rzeczy w odpowiednich folderach (src/main/flex), a ta wtyczka automatycznie doda ją do twojego projektu. Jeśli chcesz do fancier custom stuff, there are some options. ale Maven polega na faworyzowaniu konwencji nad konfiguracją.

+0

Och ładny, to ten cel egzekucji sprawił, że działał. Chyba będę musiał wrócić i zobaczyć dokładnie, co to oznacza. Tak więc haczyk dla wtyczek polega na dodaniu wykonania, które uruchamia się podczas cyklu życia? – dcolish

+0

Evenrything in Maven to wtyczka, nawet jeśli jej nie widzisz. Chcąc dokonać zmiany, pierwszym krokiem jest wzięcie jednej z wbudowanych wtyczek i zmiana konfiguracji trochę ... Kiedy wbudowane wtyczki nie zrobią czegoś, możesz zacząć przeglądać z wtyczkami innych firm. Jeśli nie masz szczęścia, możesz zrobić własne :) – bwawok

0

Szczerze mówiąc, uważam, że twój obecny sposób myślenia jest znacznie lepszy od mrówki, a proponuję zacząć od tego.

+0

Czy to oznacza, że ​​Maven nie jest w stanie dodać do kompilacji dodatkowych zadań kompilacji? Chyba mógłbym umieścić kroki budowania w pliku ant i mvn po prostu to uruchomi. Jednak to rozwiązanie wydaje się nieco brzydkie. – dcolish

+0

Możesz zrobić wszystko w Maven. Przekaż więcej w nowej odpowiedzi. – bwawok

+0

Nie powiedziałem, że maven nie może tego zrobić. Powiedziałem, że twój sposób myślenia jest bliższy mrówce (pochodzącej z make) niż maven. –