85 votes

version mvn: préparer ne pas valider les modifications apportées à pom.xml

Je suis en train de sortir un plugin Jenkins (stashNotifier) avec Maven et faire face à un problème avec la version du plugin.

mvn clean release:prepare

s'exécute jusqu'à la fin sans erreurs, mais ne parvient pas à engager la changé pom.xml dans mon dépôt git local. Même si elle n'tag de la TÊTE de la branche sur laquelle je suis en train de la version de la version 1.0.2. C'est ce que mon agence locale ressemble avant de préparer la publication

* df60768 (HEAD, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md 

et c'est à quoi il ressemble après

* df60768 (HEAD, tag: stashNotifier-1.0.2, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md 

Malheureusement, l'pom.xml contient déjà la prochaine version de développement, qui à son tour provoque une version ultérieure:effectuer à libérer cette version de capture instantanée.

À partir de la sortie de la commande de maven, il ressemble presque à c'est l'omission de la commande git commit:

[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Tagging release with the label stashNotifier-1.0.2...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git tag -F /var/folders/dr/xxbtyycs1z9dl2_snlj87zrh0000gn/T/maven-scm-678409272.commit stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git push git@github.com:jenkinsci/stashnotifier-plugin.git stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git ls-files
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Transforming 'Stash Notifier'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Release preparation complete.

Je suis l'exécution de maven 3.0.5 (sans --dry-run ou -DpushChanges=false). Voici les (je pense) des parties de mon effectif pom:

[...]

<scm>
   <connection>scm:git:git://github.com/jenkinsci/stashnotifier-plugin.git</connection>
   <developerConnection>scm:git:git@github.com:jenkinsci/stashnotifier-plugin.git</developerConnection>
   <url>https://github.com/jenkinsci/stashnotifier-plugin</url>
</scm>

[...]

<distributionManagement>
   <repository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/releases/</url>
   </repository>
   <snapshotRepository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/snapshots</url>
   </snapshotRepository>
   <site>
     <id>github-pages</id>
     <url>gitsite:git@github.com/jenkinsci/maven-site.git:plugin-parent/stashNotifier</url>
   </site>
</distributionManagement>

[...]

<properties>
   [...]
   <maven-release-plugin.version>2.2.2</maven-release-plugin.version>
   [...]
</properties>

[...]

<build>
   [...]
   <pluginManagement>
      <plugins>
         [...]
         <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.2.2</version>
         </plugin>
         [...]
   </pluginManagement>

   [...]

   <plugins>
      [...]
      <plugin>
         <artifactId>maven-release-plugin</artifactId>
         <version>2.2.2</version>
         <configuration>
            <goals>deploy</goals>
         </configuration>
      </plugin>
      [...]
   </plugins>
</build>

Ce que je fais mal? Merci d'avance pour vos idées!

Cheers, Georg

97voto

richnou Points 321

J'ai résolu le problème de mon côté (en exécutant maven 3.0.5) en mettant à jour la dépendance du fournisseur git scm, pas la version du plug-in de publication:

 <build>
  <plugins>
    <plugin>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.4.2</version>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.scm</groupId>
          <artifactId>maven-scm-provider-gitexe</artifactId>
          <version>1.8.1</version>
        </dependency>
       </dependencies>
      </plugin>
    </plugins>
</build>
 

La version 1.8.1 de git scm effectue correctement la validation de git (testé avec les objectifs de préparation et d'annulation).

18voto

vasekt Points 342

J'ai rencontré le même problème, la solution par #richnou fonctionne pour moi (mise à niveau des SCM de la dépendance). Il y a le problème créé sur ce problème, voir le lien ci-dessous. Le problème qui se pose avec une nouvelle version de Git où "git status" renvoie les messages de localisation qui plugin ne peut pas analyser. Il est la cause. Le problème a été résolu dans git, msc (version 1.8.1) à l'aide de --porcelain option de git (qui devrait revenir facilement parsable de sortie), mais une fois ce correctif, un autre problème est soulevé - si le dépôt de la racine (scm tag) n'est pas le répertoire de travail, release:prepare ne fonctionne toujours pas. Ce problème semble être résolu dans l'instantané de la version de Git SCM (pas encore sorti). Cela peut être workarounded par copiing scm balise dans enfant pom.

MRELEASE-812

SCM-709

maven-release-plugin-et-git-fix

9voto

Iulian Ghionoiu Points 31

Vous avez probablement lu ceci parce que les solutions mentionnées ci-dessus n'ont pas fonctionné pour vous. J'ai eu le même problème et j'ai essayé tout ce qui est mentionné ici. Mes versions étaient les suivantes: maven-release-plugin 2.5 et git 1.7.9

La solution qui a fonctionné pour moi a été de déclasser maven-release-plugin vers la version 2.3.2.

 <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <autoVersionSubmodules>true</autoVersionSubmodules>
            </configuration>
        </plugin>
    </plugins>
</build>
 

1voto

Lucas Points 4891

J'ai rencontré ce même problème lors de l'utilisation de cygwin+maven+git. Il a montré aucune erreur, mais n'a pas de tentative de commettre l'pom change, tout s'est arrêté après git status:

[INFO] Checking in modified POMs...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Tagging release with the label portal-automation-0.3.9...
[INFO] Executing: cmd.exe /X /C "git tag -F C:\cygwin64\tmp\maven-scm-1212196933.commit portal-automation-0.3.9"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git push git@barrel.mitre.org:org-mitre-caasd/portal-automation.git portal-automation-0.3.9"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git ls-files"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Transforming 'portal-automation'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

Comme vous pouvez le voir, pas d'erreurs, n'a tout simplement pas s'engager après vérification de l'état. Cependant quand j'ai couru à partir de l'invite de commandes windows à la place:

...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git commit --verbose -F C:\Users\ltheisen\AppData\Local\Temp\maven-scm-2030091036.commit pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git symbolic-ref HEAD"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git push git@barrel.mitre.org:org-mitre-caasd/portal-automation.git master:master"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

Vous pouvez voir qu'il a commis après vérification de l'état. Pas sûr si cela est votre problème, mais cela a fonctionné pour moi.

Notez que cela signifie que vous devez installer msysgit

1voto

Lukas Fryc Points 91

J'utilise Git 1.8.x localement et j'ai rencontré un problème similaire:

maven-scm-plugin ne

 $ git add
$ git status
 

mais non

 $ git commit
 

Utiliser une autre machine avec Git 1.7.x m'a aidé à résoudre ce problème.

Note: J'ai essayé d'utiliser maven-scm-plugin 1.8.1 ou 1.9, maven-release-plugin 2.4.1 ou 2.4.2.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X