Dato il seguente progetto di esempio multi-modulo:Maven Plugin di uscita con SVN: Esterni e un multi-modulo di progetto
- aggr/pom.xml (versione 1.0-SNAPSHOT)
- aggr/genitore/pom .xml (Versione 2.0-SNAPSHOT)
- aggr/app/pom.xml (versione 3.0-SNAPSHOT)
- aggr/COMP1/pom.xml (Versione 4.0-SNAPSHOT)
cui genitore è il sbucciare nt di qualsiasi altro pom e app ha una dipendenza da comp1.
Rilascio tramite rilascio: preparare/eseguire funziona correttamente purché la cartella aggr abbia la stessa struttura all'interno del repository svn (repository/trunk/aggr/parent.pom, ...).
Ora quando voglio usare lo stesso progetto ma con svn: gli esterni, il rilascio-plugin non funziona affermando che comp1:
Can't release project due to non released dependencies : parent:pom:2.0-SNAPSHOT
La struttura repository è quindi qualcosa di simile
- repository/Aggi/trunk/pom.xml
- repository/genitore/trunk/pom.xml
- repository/app/trunk/pom .xml
- repository/comp1/trunk/pom.xml cartella
l'aggr usa esterni che punta al modulo di tronchi e quindi la copia di lavoro controllato assomiglia quanto sopra.
Perché Maven gestisce i moduli in base agli esterni in modo diverso e c'è un modo per superare questo problema?
Modifica: i file pom del progetto svn: externals. L'unica differenza con i pom-Files dell'altro progetto sono i tag scm. Nell'altro progetto non esterni solo l'aggregatore ha il tag scm.
genitore-pom.xml esterno
<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>
aggr-pom.xml esterno small.test genitore 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>
app-pom.xml esterno
<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>
Grazie Konrad
Il problema principale si dispone non utilizza la stessa versione per tutti i moduli, ecc Inoltre si può visualizzare i file pom? A parte questo, perché stai usando gli esterni per creare una struttura multi-modulo e non creare una struttura reale senza elementi esterni? – khmarbaise
I moduli e il genitore del progetto reale vengono utilizzati in diversi progetti. Quindi devo fare affidamento sugli esterni e non posso usare la stessa versione per l'intero progetto. – Konrd
Questo non è davvero un motivo, perché se si dispone di una build multi-modulo è possibile utilizzare i moduli separatamente. Quindi, se non si modifica la struttura delle cartelle in un singolo albero SVN invece di utilizzare le esternalizzazioni, non è possibile eseguirlo. – khmarbaise