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
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
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
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