Please use hg scm provider component

Thanks !
-- 
Olivier Lamy
http://twitter.com/olamy
http://www.linkedin.com/in/olamy

2011/3/4 Andreas Ebbert-Karroum <[email protected]>:
> Hi Olivier,
>
> I can gladly do so. Do you want me to report that for the
> maven-release-plugin, or is that an issue with the hg scm provider?
>
> Andreas
>
> 2011/3/4 Olivier Lamy <[email protected]>
>>
>> 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 <[email protected]>:
>> > 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: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>
>
>
> --
> 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to