Hello, Perso, I have tested MRELEASE-457 with git and svn. So it look to need some hack to work with the hg scm provider.
Can you load a jira issue I will have a look ? Thanks ! -- Olivier Lamy http://twitter.com/olamy http://www.linkedin.com/in/olamy 2011/3/3 Andreas Ebbert-Karroum <andreas.ebbert-karr...@codecentric.de>: > Hi, > > I still stand by my claim that the story of releasing a single module in a > hg multi-module repository is currently not possible. Now you might say, > that this is against conventions, and you should always release the whole > repository, but usage of of maven and mercurial differs, and after all it's > "convention over configuration" and not "convention or not at all". > > In this E-Mail I will prove to you that this is not possible, if you will > follow me through the following steps. If at any point I missed an option I > would like you to raise your voice :) > > *Step 1* > > So, I started with a very simple multi-module project (/pom.xml and > /multi/pom.xml) and tried to release just a single module (multi). It turned > out that this is not possible, because during the release:perform phase, the > whole hg repository is checked out, and the build is started in the root of > that repository. > > => Use the latest maven-release-plugin:2.2-SNAPSHOT in which > MRELEASE-457<http://jira.codehaus.org/browse/MRELEASE-457>is fixed. > > *Step 2* > > The new dependencies with the snapshot release plugin also updates to a > newer hg scm provider. The new hg scm provider has the interesting new habit > to throw an exception, when you want to tag something, which does not > concern the whole repository. > > Caused by: org.apache.maven.scm.ScmException: This provider doesn't support > tagging subsets of a directory > at > org.apache.maven.scm.provider.hg.command.tag.HgTagCommand.executeTagCommand(HgTagCommand.java:77) > at > org.apache.maven.scm.command.tag.AbstractTagCommand.executeCommand(AbstractTagCommand.java:81) > at > org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59) > ... 29 more > > => Update the dependencies of maven-release-plugin:2.2-SNAPSHOT to use > maven-scm-provider-hg:1.4 > > *Step 3 > * > The next step was to move the parent pom out of the root of the hg > repository. We have a standardized layout in our hg repositories (to take > into account various tradeoffs between maven, m2eclipse, hudson, etc.) that > we have all projects in directories under the root directory. So I tried to > have > / root / pom.xml (having a module ../multi) > and > / multi / pom.xml (having a parent ../root) > > The release plugin did not like that at all: > > [INFO] EXECUTING: cmd.exe /X /C "hg commit --message "[maven-release-plugin] > prepare release root-1.6" C:\Temp\releasetest\parent\pom.xml > C:\Temp\releasetest\multi\pom.xml" > [INFO] EXECUTING: cmd.exe /X /C "*hg push file:///C:/Temp/releasetestrepo*" > [INFO] Tagging release with the label root-1.6... > [INFO] EXECUTING: cmd.exe /X /C "hg tag --message "[maven-release-plugin] > copy for tag root-1.6" root-1.6" > [INFO] EXECUTING: cmd.exe /X /C "*hg push file:///C:/Temp*" > [ERROR] > EXECUTION FAILED > Execution of cmd : push failed with exit code: -1. > Working directory was: > c:\temp\releasetest > Your Hg installation seems to be valid and complete. > Hg version: 1.6.2 (OK) > > > This is probably a bug, but I have no idea if this is in the scm provider, > release plugin, shared components, ... I'm glad to create a jira issue for > it, but would like to do so for the right project. > > => Having no pom.xml in the root of the repository is apparently a bad idea. > But we need to have our "parent" in a folder under the root directly. So I > created a thin dummy pom, which just has the real parent as module. > > *Step 4* > > So we now have: > / pom.xml > / parent / pom.xml > / multi / pom.xml > > While I created the root pom.xml, I tried to optimize a bit and included > localCheckout=true to the plugin configuration, so that the tag checkout > does not happen from the remote repository, but from the local one. Bad > idea: > > [ERROR] Failed to execute goal > org.apache.maven.plugins:maven-release-plugin:2.2-SNAPSHOT:perform > (default-cli) on project root: The scm url is invalid. > [ERROR] - An hg 'file' url must be on the form 'file:///' or > 'file://localhost/'. > > My scm url is: scm:hg:file:///C:/Temp/releasetestrepo > > So also the "remote" hg repository is on the local filesystem, but when the > local checkout occurs, the url is apparently not constructed correctly. > > => Ok, no localCheckout. Not a big deal, moving on. > > *Step 5* > > If possible, I don't want the /parent/pom.xml to inherit from /pom.xml, > because it may well be, that it needs to inherit from something completely > different. I only wanted to use the /pom.xml as a forwarder to > /parent/pom.xml. So I tried that, and tried to release the "multi"-module. I > did this by running from working directory /parent the command "mvn > --batch-mode -pl multi release:prepare". But I could not find a working scm > configuration in /parent/pom.xml > > When it was set to "scm:hg:file:///C:/Temp/releasetestrepo/parent" I got > this error - apperently it tried to replace the current module name "parent" > in the scm url with "multi": > [INFO] EXECUTING: cmd.exe /X /C "hg commit --message "[maven-release-plugin] > prepare release multi-1.22" C:\Temp\releasetest\multi\pom.xml" > [INFO] EXECUTING: cmd.exe /X /C "hg push * > file:///C:/Temp/releasetestrepo/multi*" > > But when I set the scm url to the correct value > "scm:hg:file:///C:/Temp/releasetestrepo" it removed the last path element: > [INFO] EXECUTING: cmd.exe /X /C "hg commit --message "[maven-release-plugin] > prepare release multi-1.22" C:\Temp\releasetest\multi\pom.xml" > [INFO] EXECUTING: cmd.exe /X /C "hg push *file:///C:/Temp/multi*" > > ==> so apparently the /parent/pom.xml needs to inherit from /pom.xml and scm > info should be in the root. > > *Step 6* > > So I tried that but ran into problems again! > > C:\Temp\releasetest>mvn -pl multi --offline --batch-mode release:prepare > [INFO] Checking in modified POMs... > [INFO] EXECUTING: cmd.exe /X /C "hg commit --message "[maven-release-plugin] > prepare release multi-1.28" C:\Temp\releasetest\multi\pom.xml" > [INFO] EXECUTING: cmd.exe /X /C "hg push file:///C:/Temp/multi" > [ERROR] > EXECUTION FAILED > Execution of cmd : push failed with exit code: -1. > Working directory was: > C:\Temp\releasetest\multi > Your Hg installation seems to be valid and complete. > Hg version: 1.6.2 (OK) > > => This means, the scm configuration has to be present in every module, even > if it is absolutely the same everywhere. > > *Step 7* > > So I got it working in an example project, but the fact, that I have to copy > the scm configuration into every module, makes that solution impossible to > rollout to any serious production environment. > > If there is anything that I missed, please let me know! > > For the sake of everybody, here are the poms, and how I ran the command: > > */pom.xml* > > <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" > http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" > http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> > <modelVersion>4.0.0</modelVersion> > > <groupId>de.aek.test</groupId> > <artifactId>root</artifactId> > <version>1.12-SNAPSHOT</version> > <packaging>pom</packaging> > > <modules> > <module>parent</module> > </modules> > > <scm> > <connection>scm:hg:file:///C:/Temp/releasetestrepo</connection> > > <developerConnection>scm:hg:file:///C:/Temp/releasetestrepo</developerConnection> > </scm> > > <build> > <plugins> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-release-plugin</artifactId> > <version>2.2-SNAPSHOT</version> > <configuration> > > <allowTimestampedSnapshots>true</allowTimestampedSnapshots> > <goals>install</goals> > <resume>false</resume> > </configuration> > <dependencies> > <dependency> > <groupId>org.apache.maven.scm</groupId> > <artifactId>maven-scm-provider-hg</artifactId> > <version>1.4</version> > </dependency> > </dependencies> > </plugin> > </plugins> > </build> > <pluginRepositories> > <pluginRepository> > <id>apache.snapshots</id> > <name>Apache Snapshots</name> > <url>https://repository.apache.org/content/groups/snapshots/ > </url> > </pluginRepository> > </pluginRepositories> > </project> > > */parent/pom.xml* > > <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" > http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" > http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> > <modelVersion>4.0.0</modelVersion> > > <parent> > <groupId>de.aek.test</groupId> > <artifactId>root</artifactId> > <version>1.10</version> > <relativePath>..</relativePath> > </parent> > > <groupId>de.aek.test</groupId> > <artifactId>parent</artifactId> > <version>1.13-SNAPSHOT</version> > <packaging>pom</packaging> > > <scm> > <connection>scm:hg:file:///C:/Temp/releasetestrepo</connection> > > <developerConnection>scm:hg:file:///C:/Temp/releasetestrepo</developerConnection> > </scm> > > <modules> > <module>../multi</module> > </modules> > > </project> > > */multi/pom.xml* > > <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" > http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" > http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> > <modelVersion>4.0.0</modelVersion> > > <parent> > <groupId>de.aek.test</groupId> > <artifactId>parent</artifactId> > <version>1.12</version> > <relativePath>../parent</relativePath> > </parent> > > <groupId>de.aek.test</groupId> > <artifactId>multi</artifactId> > <version>1.27-SNAPSHOT</version> > <packaging>pom</packaging> > > <scm> > <connection>scm:hg:file:///C:/Temp/releasetestrepo</connection> > > <developerConnection>scm:hg:file:///C:/Temp/releasetestrepo</developerConnection> > </scm> > > </project> > > *preparing and performing a release > * > C:\Temp\releasetest>mvn -pl multi --offline --batch-mode release:prepare > [INFO] Scanning for projects... > [INFO] > [INFO] > ------------------------------------------------------------------------ > [INFO] Building multi 1.27-SNAPSHOT > [INFO] > ------------------------------------------------------------------------ > [INFO] > [INFO] --- maven-release-plugin:2.2-SNAPSHOT:prepare (default-cli) @ multi > --- > [INFO] Verifying that there are no local modifications... > [INFO] ignoring changes on: pom.xml.next, release.properties, > pom.xml.releaseBackup, pom.xml.backup, pom.xml.branch, pom.xml.tag > [INFO] EXECUTING: cmd.exe /X /C "hg status" > [INFO] Not a file: C:\Temp\releasetest\multi\multi\release.properties. > Ignoring > [INFO] Ignoring SNAPSHOT depenedencies and plugins ... > [INFO] Transforming 'multi'... > [INFO] Not generating release POMs > [INFO] Executing goals 'clean verify'... > [INFO] [INFO] Scanning for projects... > [INFO] [INFO] > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] [INFO] Building multi 1.27 > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] [INFO] > [INFO] [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ multi --- > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] [INFO] BUILD SUCCESS > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] [INFO] Total time: 1.063s > [INFO] [INFO] Finished at: Thu Mar 03 15:52:50 CET 2011 > [INFO] [INFO] Final Memory: 2M/5M > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] Checking in modified POMs... > [INFO] EXECUTING: cmd.exe /X /C "hg commit --message "[maven-release-plugin] > prepare release multi-1.27" C:\Temp\releasetest\multi\pom.xml" > [INFO] EXECUTING: cmd.exe /X /C "hg push file:///C:/Temp/releasetestrepo" > [INFO] Tagging release with the label multi-1.27... > [INFO] EXECUTING: cmd.exe /X /C "hg tag --message "[maven-release-plugin] > copy for tag multi-1.27" multi-1.27" > [INFO] EXECUTING: cmd.exe /X /C "hg push file:///C:/Temp/releasetestrepo" > [INFO] EXECUTING: cmd.exe /X /C "hg locate" > [INFO] Transforming 'multi'... > [INFO] Not removing release POMs > [INFO] Checking in modified POMs... > [INFO] EXECUTING: cmd.exe /X /C "hg commit --message "[maven-release-plugin] > prepare for next development iteration" C:\Temp\releasetest\multi\pom.xml" > [INFO] EXECUTING: cmd.exe /X /C "hg push file:///C:/Temp/releasetestrepo" > [INFO] Release preparation complete. > [INFO] > ------------------------------------------------------------------------ > [INFO] BUILD SUCCESS > [INFO] > ------------------------------------------------------------------------ > [INFO] Total time: 7.625s > [INFO] Finished at: Thu Mar 03 15:52:52 CET 2011 > [INFO] Final Memory: 3M/7M > [INFO] > ------------------------------------------------------------------------ > C:\Temp\releasetest>mvn -pl multi --offline --batch-mode release:perform > [INFO] Scanning for projects... > [INFO] > [INFO] > ------------------------------------------------------------------------ > [INFO] Building multi 1.28-SNAPSHOT > [INFO] > ------------------------------------------------------------------------ > [INFO] > [INFO] --- maven-release-plugin:2.2-SNAPSHOT:perform (default-cli) @ multi > --- > [INFO] Checking out the project to perform the release ... > [INFO] Removing C:\Temp\releasetest\multi\target\checkout > [INFO] EXECUTING: cmd.exe /X /C "hg clone -r multi-1.27 > file:///C:/Temp/releasetestrepo C:\Temp\releasetest\multi\target\checkout" > [INFO] EXECUTING: cmd.exe /X /C "hg locate" > [INFO] Invoking perform goals in directory > C:\Temp\releasetest\multi\target\checkout\multi > [INFO] Executing goals 'install'... > [INFO] [INFO] Scanning for projects... > [INFO] [WARNING] > [INFO] [WARNING] Some problems were encountered while building the effective > model for de.aek.test:multi:pom:1.27 > [INFO] [WARNING] 'build.plugins.plugin.version' for > org.apache.maven.plugins:maven-javadoc-plugin is missing. > [INFO] [WARNING] 'build.plugins.plugin.version' for > org.apache.maven.plugins:maven-deploy-plugin is missing. > [INFO] [WARNING] 'build.plugins.plugin.version' for > org.apache.maven.plugins:maven-source-plugin is missing. > [INFO] [WARNING] > [INFO] [WARNING] It is highly recommended to fix these problems because they > threaten the stability of your build. > [INFO] [WARNING] > [INFO] [WARNING] For this reason, future Maven versions might no longer > support building such malformed projects. > [INFO] [WARNING] > [INFO] [INFO] > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] [INFO] Building multi 1.27 > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] [INFO] > [INFO] [INFO] >>> maven-source-plugin:2.1.2:jar (attach-sources) @ multi >>> > [INFO] [INFO] > [INFO] [INFO] <<< maven-source-plugin:2.1.2:jar (attach-sources) @ multi <<< > [INFO] [INFO] > [INFO] [INFO] --- maven-source-plugin:2.1.2:jar (attach-sources) @ multi --- > [INFO] [INFO] > [INFO] [INFO] --- maven-javadoc-plugin:2.7:jar (attach-javadocs) @ multi --- > [INFO] [INFO] Not executing Javadoc as the project is not a Java > classpath-capable package > [INFO] [INFO] > [INFO] [INFO] --- maven-install-plugin:2.3.1:install (default-install) @ > multi --- > [INFO] [INFO] Installing > C:\Temp\releasetest\multi\target\checkout\multi\pom.xml to C:\Dokumente und > Einstellungen\aek\.m2\repository\de\aek\test\multi\1.27\muti-1.27.pom > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] [INFO] BUILD SUCCESS > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] [INFO] Total time: 8.843s > [INFO] [INFO] Finished at: Thu Mar 03 15:53:11 CET 2011 > [INFO] [INFO] Final Memory: 5M/10M > [INFO] [INFO] > ------------------------------------------------------------------------ > [INFO] Cleaning up after release... > [INFO] > ------------------------------------------------------------------------ > [INFO] BUILD SUCCESS > [INFO] > ------------------------------------------------------------------------ > [INFO] Total time: 12.797s > [INFO] Finished at: Thu Mar 03 15:53:11 CET 2011 > [INFO] Final Memory: 3M/7M > [INFO] > ------------------------------------------------------------------------ > > -- > Mit freundlichen Grüßen / Best regards > > Andreas Ebbert-Karroum | Bereichsleiter der Agilen Software Factory > > codecentric AG | Merscheider Straße 1 | 42699 Solingen | Deutschland > tel: +49 (0) 212.23362825 | fax: +49 (0) 212.23362879 | mobil: +49 (0) > 175.2664109 > www.codecentric.de | blog.codecentric.de | www.meettheexperts.de | > www.more4fi.de > > Sitz der Gesellschaft: Düsseldorf | HRB 63043 > Vorstand: Klaus Jäger (Vorsitzender) | Mirko Novakovic . Rainer Vehns > Aufsichtsrat: Patric Fedlmeier (Vorsitzender) . Bernd Klinkmann . Jürgen > Schütz > > Diese E-Mail einschließlich evtl. beigefügter Dateien enthält vertrauliche > und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige > Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie > bitte sofort den Absender und löschen Sie diese E-Mail und evtl. beigefügter > Dateien umgehend. Das unerlaubte Kopieren, Nutzen oder Öffnen evtl. > beigefügter Dateien sowie die unbefugte Weitergabe dieser E-Mail ist nicht > gestattet. > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org