How do I specify the commit message in the pom when using scm-maven-plugin?

Helder Roem picture Helder Roem · Jan 18, 2013 · Viewed 7k times · Source

I'm trying to use the maven SCM plugin to commit some files to a git repo during an automated build, the plugin requires a commit message to be set as a system property, I don't want to have to pass this on the command line (I'm also using the release plugin and this causes issues).

I've tried everything I think of to add the message system property via the pom but no luck, here's a stripped down version of my pom:

<?xml version="1.0" encoding="UTF-8"?>
<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>com.monkeys.coding</groupId>
    <artifactId>project</artifactId>
    <packaging>js</packaging>
    <version>1.0.4-SNAPSHOT</version>

    <name>Some Project</name>
    <description>Some Project where I want to add files to git during build</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <projectVersion>${project.version}</projectVersion>
    </properties>

    <scm>
        <connection>scm:git:http://some.git.repo:9080/git/module.git</connection>
        <developerConnection>scm:git:http://some.git.repo:9080/git/module.git</developerConnection>
        <url>http://some.git.repo:9080/git/module.git</url>
    </scm>

    <build>
        <finalName>${project.artifactId}</finalName>
        <!-- Package as js -->
        <extensions>
            <extension>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>javascript-maven-plugin</artifactId>
                <version>2.0.0-alpha-1</version>
            </extension>
        </extensions>
    ...
    </build>

    <profiles>
        <!-- run this profile when releasing the library -->
        <profile>
            <id>release</id>
            <properties>
                <message>Add version files to git</message>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-scm-plugin</artifactId>
                        <version>1.8.1</version>
                        <configuration>
                            <message>Add version files to git</message>
                            <systemProperties>
                                <systemProperty>
                                    <name>message</name>
                                    <value>[Add Version to git]</value>
                                </systemProperty>
                            </systemProperties>
                        </configuration>
                        <executions>
                            <execution>
                                <id>add-version-to-git</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>add</goal>
                                    <goal>checkin</goal>
                                </goals>
                                <configuration>
                                    <basedir>./</basedir>
                                    <includes>versions/*</includes>
                                    <systemProperties>
                                        <systemProperty>
                                            <name>message</name>
                                            <value>[Add Version to git]</value>
                                        </systemProperty>
                                    </systemProperties>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>

Adding message via the profile properties seems to work, the files are commited to get and the message appear in the repo but the build fails with this error:

    [ERROR] Provider message:
    [ERROR] The git-commit command failed.
    [ERROR] Command output:
    [ERROR] 
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 28.637s
    [INFO] Finished at: Fri Jan 18 12:59:40 GMT 2013
    [INFO] Final Memory: 19M/81M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-scm-plugin:1.8.1:checkin (add-version-to-git) on project: Command failed.The git-commit command failed. -> [Help 1]

Any ideas on what I'm doing wrong?

Cheers Rob

Answer

Ofir Farchy picture Ofir Farchy · Jan 18, 2013

Try changing the pom.xml to look like this:

...
    <executions>
        <execution>
            <id>add-version-to-git</id>
            <phase>package</phase>
            <goals>
                <goal>add</goal>
                <goal>checkin</goal>
            </goals>
            <configuration>
                <basedir>./</basedir>
                <includes>versions/*</includes>
                <message>[Add Version to git]</message>
            </configuration>
        </execution>
    </executions>
...

Try using message property instead of systemProperties.

Or you could always do this in command line like:

mvn -Dmessage="<commit_log_here>" scm:checkin

as stated here