Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Maven cannot find .git (dotGitDirectory)

Tags:

git

github

maven

I have an issue similar to what has been asked here, but there is no answer. Have following structure in maven project (which is standard):

parent-pom - which is a parent for all others
    |_reactor - which is a concrete project, parent-pom is a parent
        |_module_1 - reactor is a parent
        |_module_2
        ...
        |_module_n

git-commit-id-plugin is configured in parent-pom and nowhere else.

Until recently everything was fine: I was able to build both the whole reactor project and all modules separately with mvn clean install. Then I added a new module (let's say module_n1), I believe the build had been going fine until massive merge. Now I got following situation: reactor build is successful, each module separately from 1 to n builds successfully as well. But module_n1 fails with following error:

 [ERROR] Failed to execute goal pl.project13.maven:git-commit-id-plugin:2.1.7:revision (default) on project module_n1: .git directory could not be found! Please specify a valid [dotGitDirectory] in your pom.xml

There is a .git folder under reactor module. As an experiment I removed it and get the same error for other modules.

What could be a reason why one particular module cannot find .git folder during the build?

Thanks.

like image 698
Vic K Avatar asked Jul 01 '15 23:07

Vic K


3 Answers

Not a solution, but if you want to skip git-commit-id-plugin execution defined in a parent pom until project is added to git, you can override execution in your pom.

        <pluginManagement>
        <plugins>
            <plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
like image 128
charlb Avatar answered Oct 21 '22 08:10

charlb


Since version 2.0.4 The flag failOnNoGitDirectory is true by default. Set the flag to false to make sure this goal is skipped when .git directory doesn't exist.

<build>
    <plugins>
        <plugin>
            <groupId>pl.project13.maven</groupId>
            <artifactId>git-commit-id-plugin</artifactId>
            <configuration>
                <failOnNoGitDirectory>false</failOnNoGitDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>

The plugin has an internal logic of searching for .git repositories in the current and parent directories of the project. I wouldn't worry much if the multi-module project sits under the same git repository.

like image 15
Raja Anbazhagan Avatar answered Oct 21 '22 10:10

Raja Anbazhagan


I bumped into this problem today and the solution is pretty clear looking at this well documented maven plugin:

https://github.com/ktoso/maven-git-commit-id-plugin

Here you have declared the plugin in 'module_n1' and there is no .git directory in that folder. The solution would be to configure the plugin as follow if the .git directory is in the parent directory (eg. reactor):

        <plugin>
            <groupId>pl.project13.maven</groupId>
            <artifactId>git-commit-id-plugin</artifactId>
            <version>2.1.15</version>
            <executions>
                <execution>
                    <goals>
                        <goal>revision</goal>
                     </goals>
                </execution>
            </executions>
            <configuration>
                <dotGitDirectory>${project.basedir}/../.git</dotGitDirectory>
                <!-- more config here as you see fit -->
            </configuration>
        </plugin>
like image 10
Samuel Kerrien Avatar answered Oct 21 '22 09:10

Samuel Kerrien