Maven SCM
  1. Maven SCM
  2. SCM-612

maven-release-plugin causes mercurial scm provider to fail when only a module is released

    Details

    • Type: Bug Bug
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.4, 1.5
    • Fix Version/s: None
    • Labels:
      None
    • Complexity:
      Intermediate
    • Number of attachments :
      1

      Description

      Problem as described on the maven-users mailing list. Basically it is not possible to release a single module from a multi-module project with mercurial as scm provider.

      When trying with current 1.5-SNAPSHOT:

      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 
      

      When trying with 1.4 release

      It is more complicated, but also does not work. It boils down to having a mandatory pom.xml in the repository root and scm url messed up during the release:prepare and release:perform phases. See mentioned email for more details.

        Activity

        Hide
        Andreas Ebbert-Karroum added a comment -

        The repository I used for testing.

        Show
        Andreas Ebbert-Karroum added a comment - The repository I used for testing.
        Hide
        Olivier Lamy added a comment -

        probably a stupid issue fix with this commit http://svn.apache.org/viewvc?view=revision&revision=1083086
        I have deployed a new Scm SNAPSHOT can you try again ?

        Show
        Olivier Lamy added a comment - probably a stupid issue fix with this commit http://svn.apache.org/viewvc?view=revision&revision=1083086 I have deployed a new Scm SNAPSHOT can you try again ?
        Hide
        Andreas Ebbert-Karroum added a comment -

        Hi,

        I haven't tried it, but I doubt that this change is fixing everything that I described on the mailing list.

        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.

        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] 
        ------------------------------------------------------------------------ 
        Show
        Andreas Ebbert-Karroum added a comment - Hi, I haven't tried it, but I doubt that this change is fixing everything that I described on the mailing list. 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. 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] ------------------------------------------------------------------------
        Hide
        Andreas Ebbert-Karroum added a comment -

        Hi,

        any progress on this? I'm still unable to release mercurial projects with maven

        Andreas

        Show
        Andreas Ebbert-Karroum added a comment - Hi, any progress on this? I'm still unable to release mercurial projects with maven Andreas
        Hide
        Olivier Lamy added a comment -

        Again can you try with scm 1.6-SNAPSHOT ?

        Show
        Olivier Lamy added a comment - Again can you try with scm 1.6-SNAPSHOT ?
        Hide
        Rigaud Olivier added a comment -

        Hi,

        any news on this?

        I experienced the same issue.
        I have a multi module project. Until now I had a job Jenkins with the command release:prepare and perform. But the version was changed on every module. Now I would like to be able to change the version of a specific module independantly of the others.
        So in the pom parent I deleted the module.
        In the child, I let the reference to the parent.

        When I run my command on the parent, everything is fine. Every module except one are released and deployed on nexus. Perfect.
        Then, I run the commande on the specific module, and I have the error with the code 255 while pushing...

        I tried to put the URL of the SCM in the child without any effet....
        I tried to force the version of :
        maven-release-plugin : 2.4.1
        maven-scm-provider-hg : 1.8.1
        without any effect too...

        Show
        Rigaud Olivier added a comment - Hi, any news on this? I experienced the same issue. I have a multi module project. Until now I had a job Jenkins with the command release:prepare and perform. But the version was changed on every module. Now I would like to be able to change the version of a specific module independantly of the others. So in the pom parent I deleted the module. In the child, I let the reference to the parent. When I run my command on the parent, everything is fine. Every module except one are released and deployed on nexus. Perfect. Then, I run the commande on the specific module, and I have the error with the code 255 while pushing... I tried to put the URL of the SCM in the child without any effet.... I tried to force the version of : maven-release-plugin : 2.4.1 maven-scm-provider-hg : 1.8.1 without any effect too...

          People

          • Assignee:
            Olivier Lamy
            Reporter:
            Andreas Ebbert-Karroum
          • Votes:
            4 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated: