2013-09-02 11 views
8

Mam projekt wielomodułowy z wieloma zależnościami w różnych wersjach modułów. W tej chwili wersje są zakodowane na stałe i trzeba je ręcznie zmienić. Postanowiłem więc umieścić wszystkie z nich w pliku właściwości i uzyskać wartości właściwości z niego podczas budowania projektu.Maven: ustaw właściwość w pom.xml z pliku właściwości

Oto jak próbuję to zrobić:

korzeń pom.xml

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
    <executions> 
     <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
        <file>./version.properties</file> 
       </files> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

version.properties plików

module1.version=1.1 
module2.version=1.8 
module3.version=5.4 

przykład modułu pom.xml

<properties> 
    <module1.project.version>${module1.version}</module1.project.version> 
</properties> 

<parent> 
    <groupId>com.mymodule</groupId> 
    <artifactId>test</artifactId> 
    <version>${module1.version}</version> 
    <relativePath>../pom.xml</relativePath> 
</parent> 

budowy kończy się niepowodzeniem:

Nie udało się wykonać celem org.codehaus.mojo: build-pomocnika-maven-plugin: 1.7: analizować wersja (parse-versions) na ccm- projektu agent: Wykonanie analiz parse-wersji: bramka org.codehaus.mojo: build-helper-maven-plugin: 1.7: parsowana wersja nie powiodła się. NullPointerException -> [Pomoc 1] org.apache.maven.lifecycle.LifecycleExecutionException: Nie udało się wykonać celem org.codehaus.mojo: build-pomocnika-maven-plugin: 1.7: analizować wersja (analizowania Wersje) na projekt ccm-agent: Wykonanie analizy wersji bramka org.codehaus.mojo: build-helper-maven-plugin: 1.7: analiza parse- nie powiodła się.

Jak mogę odczytać niektóre właściwości z pliku i poprawnie skonfigurować pom.xml?

Odpowiedz

6

Na końcu okazało się bardzo proste. Użyłem fazy initialize. Zmiana go na validate naprawił problem:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-2</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
+0

Czy używasz Maven 2 lub 3? –

+0

Maven 3.0.4. Myślę, że to ma znaczenie? – Dragon

2

Nie można używać właściwości/zmiennego zamieniania wewnątrz elementów <parent>.

Głównym powodem jest to, że Maven musi przeczytać macierzysty POM, zanim będzie mógł rozpocząć rozwijanie właściwości, ponieważ macierzysty POM może również definiować właściwości.

+0

Być może przykład nie jest tak poprawny, jak być powinien. Ale można na przykład użyć go w zależnościach. – Dragon

+0

Powiedziałem: "Nie możesz używać właściwości/zmiennego zastępowania wewnątrz' 'elementów". Uzależnienia są zupełnie inną kwestią, ponieważ nie mogą modyfikować twoich właściwości. –

+0

Zrozumiałem moją winę na przykładzie. Dzięki. – Dragon

Powiązane problemy