2010-11-05 23 views
12

napisałem mały skrypt, który zastępuje BeanShell "__LINE__" z rzeczywistej liczby linii w kodzie źródłowym. Działa dobrze w Ant.Filtrowanie kod źródłowy w Maven

szukam sposobu, aby filtrować kod źródłowy w Maven tak, że mój skrypt BeanShell może wygenerować nowy katalog kodu źródłowego, który następnie zostanie skompilowany.

Wiem o filtrowaniu plików zasobów. Czy istnieje podobny obiekt dla kodu źródłowego?

Odpowiedz

19

kod źródłowy Filtrowanie wciąż trudne kilka miesięcy temu, ale nie teraz standard wtyczki w projekcie MOJO. Możesz teraz zrobić to z klasyczną deklaracją wtyczki.

Aby odfiltrować kod źródłowy (na przykład, jeśli chcesz mieć stałą w kodzie Java, aby pobrać wersję projektu lub artefaktId), powinieneś teraz użyć templating-maven-plugin.

  1. umieścić swój kod, który powinien być filtrowane podczas kompilacji pod src/main/java-templates jak normalnie można zrobić pod src/main/java dla niezarejestrowanych filtrowanych źródeł. Użyj ${project.version} lub jakiejkolwiek właściwości pochodzącej z POM w twoim kodzie.

  2. Wystarczy umieścić coś takiego:

    <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>templating-maven-plugin</artifactId> 
        <version>1.0-alpha-3</version> <!-- Be sure to use the last version. Check on the website's plugin --> 
        <executions> 
         <execution> 
         <id>filter-src</id> 
         <goals> 
          <goal>filter-sources</goal> 
         </goals> 
         </execution> 
        </executions> 
    </plugin> 
    
  3. Bądź zrobić :-). Kod wprowadzony do wnętrza src/main/java-templates zostanie przefiltrowany i dodany do ścieżki klasy.

Użycie jest bardzo proste (patrz: example here).

Ten szanuje znacznie lepszy pomysł konwencji nad konfiguracją Maven. Zasadniczo zastępujesz dziesiątki linii XML i kilka hacków, aby zrobić coś czysto.

marginesie: to działa prawidłowo z Eclipse na przykład.

+0

Witam, Próbowałem następujących odpowiedź powyżej, ale kiedy zaimportować projekt w eclipse-Keplera i umożliwić Eclipse Auto-build, jej twierdząc, że nie może znaleźć zajęcia w 'src/main/java-templates' src reż. ... patrząc na ścieżkę budowania źródła projektu, nie ma tam katalogu 'src/main/java-templates' src ... nie wiem, czy powinien tam być. Wystarczy tylko wspomnieć, że projekt buduje się pomyślnie, kiedy uruchamiam 'mvn install' od eclipse, ale chcę, żeby Eclipse nie narzekał i powinien automatycznie wybierać przetworzone źródło z' target/generated-sources/java-templates' lub może I ' Mylę? –

+1

src/main/java-templates nie jest folderem źródłowym i nie może być skonfigurowany jako jeden w IDE. Spowoduje to konflikt z docelowym filtrem katalogu docelowego/generowanych-źródeł/szablonów java (który musi być wyświetlany w Eclipse jako folder źródłowy, którego nie należy edytować). –

+1

Do automatycznego odświeżania w Eclipse, wydaje mi się, że brakuje Ci jakiejś konfiguracji M2E, spróbuj dodać https://gist.github.com/Batmat/9529785 do swojego pom.xml. Czy to działa lepiej? –