2015-07-01 19 views
5

Ho un problema simile a quello che è stato chiesto here, ma non c'è risposta. Avere seguente struttura in progetto di Maven (che è standard):Maven non trova .git (dotGitDirectory)

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 è configurato in genitore-pom e non altrove.

Fino a poco tempo fa andava tutto bene: sono stato in grado di costruire sia l'intero progetto del reattore che tutti i moduli separatamente con l'installazione di mvn clean. Poi ho aggiunto un nuovo modulo (diciamo module_n1), credo che la build andasse bene fino all'unione massiccia. Ora ho avuto la seguente situazione: la costruzione del reattore ha avuto successo, anche ciascun modulo separatamente da 1 a n ha avuto successo. Ma module_n1 esito negativo con l'errore seguente:

[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 

c'è una cartella .git sotto modulo reattore. Come esperimento l'ho rimosso e ho ottenuto lo stesso errore per altri moduli.

Quale potrebbe essere una ragione per cui un particolare modulo non riesce a trovare la cartella .git durante la compilazione?

Grazie.

risposta

-1

Mi sono imbattuto in qualcosa di simile in un sistema di compilazione pulito e potrebbe essere correlato al fatto di non essere un utente git "installato". Sul mio locale, vedo

[info] = git.build.user.name myuser

ecc, ma niente di tutto questo sul sistema pulito.

+0

Non esiste una cosa come l'installazione di un utente git, qui il plugin vuole trovare una directory .git per eseguire le sue richieste contro, perché il progetto in cui è configurato il plugin non ne ha uno, ma suppongo uno dei la directory genitore, il plugin si lamenta ... –

6

mi sono imbattuto in questo problema oggi e la soluzione è abbastanza chiaro guardando questo plugin Maven ben documentato:

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

Qui si è dichiarato il plugin in 'module_n1' e non v'è alcuna directory .git in quel cartella. La soluzione sarebbe quella di configurare il plugin come seguire se la directory .git si trova nella directory principale (ad es reattore.):

 <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> 
+0

Posso chiederti, stavi distribuendo un'applicazione alla piattaforma di heroku? Ho lo stesso problema ma non sono sicuro che "dotGitDirectory" debba essere impostato su. – emeraldjava

+1

Salve @emeraldjava, credo che questo problema sia indipendente dalla piattaforma di distribuzione. È piuttosto correlato a non sapere dove trovare il repository .git dove sta cercando di raccogliere informazioni su SCM. Nel mio caso avevo un progetto multi-modulo quindi il file .git era nella directory padre, quindi dovevo dirlo al plugin. Spero che questo aiuti;) –

+0

Buona analisi, risolto il problema con questo riferimento –

0

Aggiornamento Maven alla versione più recente risolto il problema per me.

2

Non una soluzione, ma se si desidera ignorare l'esecuzione di git-commit-id-plugin definita in un genitore principale fino a quando il progetto non viene aggiunto a git, è possibile sovrascrivere l'esecuzione nel pom.

 <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>pl.project13.maven</groupId> 
       <artifactId>git-commit-id-plugin</artifactId> 
       <configuration> 
        <skip>true</skip> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement>