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

Reply via email to