2013-04-30 11 views
5

Biorąc pod uwagę następujący przykładowy Projekt wielu modułów:Maven Release wtyczkę svn: zewnętrznymi i wielofunkcyjny moduł projektu

  • aggr/pom.xml (wersja 1.0-tło)
  • aggr/macierzysty/POM xml (wersja 2.0-tło)
  • aggr/APP/pom.xml (wersja 3.0-tło)
  • aggr/COMP1/pom.xml (wersja 4.0-SNAPSHOT)

gdzie dominująca jest obciąć nt innych pom i aplikacji ma zależność comp1.

Zwolnienie poprzez uwolnienie: przygotowanie/wykonać tylko działa dobrze dopóki folder aggr ma taką samą strukturę w repozytorium SVN (repozytorium/trunk/aggr/parent.pom, ...).

Teraz, gdy chcę korzystać z tego samego projektu, ale z svn: pozory, uwalnianie-plugin nie działa stwierdzając, że Comp1:

Can't release project due to non released dependencies : parent:pom:2.0-SNAPSHOT

Repozytorium struktura jest wtedy coś

  • repozytorium/aggr/pnia/pom.xml
  • repozytorium/macierzysty/pnia/pom.xml
  • repozytorium/APP/pnia/POM .xml
  • repozytorium/KOMP1/trunk/pom.xml folderu

aggr używa externals wskazując na module-pni i dlatego wyrejestrowany kopia robocza wygląda jak powyżej.

Dlaczego Maven inaczej obsługuje moduły oparte na elementach zewnętrznych i czy istnieje sposób, aby je przezwyciężyć?

Edytuj: Pom-Files projektu svn: externals. Jedyną różnicą do plików pom w drugim projekcie są znaczniki SCM. W innym projekcie zewnętrznym tylko agregator ma tag scm.

zewnętrzna nadrzędny pom.xml

<groupId>small.test</groupId> 
<artifactId>parent</artifactId> 
<version>2.0-SNAPSHOT</version> 

<scm> 
    <connection>scm:svn:http://localhost/svn/small-test-ext/parent/trunk/</connection> 
    <developerConnection>scm:svn:http://localhost/svn/small-test-ext/parent/trunk/</developerConnection> 
    <url>http://localhost/svn/small-test-ext/parent/trunk/</url> 
</scm> 

<build> 
<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-release-plugin</artifactId> 
     <version>2.4.1</version> 
    </plugin> 
</plugins> 

zewnętrzna aggr-pom.xml small.test dominująca 2,0 SNAPSHOT

<groupId>small.test</groupId> 
<artifactId>aggr</artifactId> 
<version>1.0-SNAPSHOT</version> 

<scm> 
    <connection>scm:svn:http://localhost/svn/small-test-ext/aggr/trunk/</connection> 
    <developerConnection>scm:svn:http://localhost/svn/small-test-ext/aggr/trunk/</developerConnection> 
    <url>http://localhost/svn/small-test-ext/aggr/trunk/</url> 
</scm> 

<modules> 
    <module>parent</module> 
    <module>comp1</module> 
    <module>comp2</module> 
    <module>app</module> 
</modules> 

zewnętrzna ok-pom.xml

<parent> 
    <groupId>small.test</groupId> 
    <artifactId>parent</artifactId> 
    <version>2.0-SNAPSHOT</version> 
</parent> 
<groupId>small.test</groupId> 
<version>3.0-SNAPSHOT</version> 

<artifactId>app</artifactId> 
<packaging>jar</packaging> 

<scm> 
    <connection>scm:svn:http://localhost/svn/small-test-ext/app/trunk/</connection> 
    <developerConnection>scm:svn:http://localhost/svn/small-test-ext/app/trunk/</developerConnection> 
    <url>http://localhost/svn/small-test-ext/app/trunk/</url> 
</scm> 

<dependencies> 
    <dependency> 
    <groupId>small.test</groupId> 
    <artifactId>comp1</artifactId> 
    <version>4.0-SNAPSHOT</version> 
</dependency> 

Dzięki Konrad

+0

Główny problem masz nie korzysta z tej samej wersji dla wszystkich modułów itp Ponadto można pokazać pliki pom? Poza tym, dlaczego używasz zewnętrznych do stworzenia struktury wielomodułowej, a nie tworzenia prawdziwej bez zewnętrznych? – khmarbaise

+0

Moduły i rodzic prawdziwego projektu są wykorzystywane w kilku projektach. Dlatego muszę polegać na zewnętrznych i nie mogę używać tej samej wersji dla całego projektu. – Konrd

+0

To naprawdę nie jest powód, ponieważ jeśli masz wielomodułową kompilację, możesz używać modułów oddzielnie. Więc jeśli nie zmienisz struktury folderów w jedno drzewo SVN zamiast używać zewnętrznych, nie będziesz mógł go uruchomić. – khmarbaise

Odpowiedz

2

W bieżącym projekcie należy uruchomić mvn: zwolnić dla każdego z nich, bo mają projekty lub moduły w różnych repozytoriów SVN.Jeśli chcesz uruchomić tylko jeden mvn: zwolnić repozytorium powinien wyglądać tak:

svn_repository: branches/ 
      tags/ 
      trunk/ 
        parent 
        comp1 
        comp2 
        app 
        pom.xml 
+2

Dokładnie to robię. Dzięki! Czy wiesz, czy istnieje wtyczka, która automatycznie nazywa wydanie: przygotuj się na wszystkie submoduły w odpowiedniej kolejności? – Konrd

Powiązane problemy