Comment puis-je configurer Maven pour engager dans un dépôt Mercurial quand j'installer: installer

StackOverflow https://stackoverflow.com/questions/1929560

Question

Maven de SCM plug-in ne semble pas fournir un "but de commettre". scm:checkin effectue un COMMIT et pousser. Je dois éviter la poussée.

Je suis simplement intéressé à faire un hg commit pendant install:install. Je ne suis pas en utilisant le plugin release et ne nécessitent pas encore. Je suis tout simplement travailler localement dans un environnement multi-module et que vous voulez faire en sorte que mon dépôt source aligne avec mon Maven instantanés installées localement pour chaque module. En d'autres termes, chaque fois que j'installer un nouvel instantané d'un module, je veux que le code correspondant engagé à hg pour faire chaque image sont directement corrélées à une révision hg (ou une série de révisions lorsque plusieurs commits se produisent entre les instantanés).

Était-ce utile?

La solution

Ce qui suit va se lier à la phase scm:checkin de install. Tant que le dépôt est un système de file:// (au moins pour Mercurial, selon le code ), pousser n'est pas effectuée au cours scm:checkin.

  1. Définir les propriétés utilisées dans les étapes suivantes:

    <properties>
      <message>maven install:install auto-checkin.</message>
      <repository.local>file:///path/to/local/repository</repository.local>
      <repository.type>hg</repository.type>
    </properties>
    

    Le <message> peut être tout ce que vous choisissez. Il n'est pas idéal pour être complètement fixé comme engage devrait inclure des messages significatifs quant à ce que des modifications ont été apportées. Mais, je crois qu'il devrait y avoir un message standard inclus dans auto-commits pour l'identifier en tant que tel. Il suffit de modifier la propriété <message> de l'étape 1. avant chaque installation.

  2. Ceci est juste un nœud standard pour scm un projet basé sur Maven. Étant donné que cela concerne uniquement avec un référentiel local, les URL sont tous les mêmes.

    <scm>
      <connection>scm:${repository.type}:${repository.local}</connection>
      <developerConnection>scm:${repository.type}:${repository.local}</developerConnection>
      <url>scm:${repository.type}:${repository.local}</url>
    </scm>
    
  3. Ceci est plug-in qui fonctionne pendant la phase de install qui effectue la validation. Il va simplement exécuter la checkin scm appropriée en fonction de la définition à l'étape 2.

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-plugin</artifactId>
          <version>1.2</version>
          <executions>
            <execution>
              <phase>install</phase>
              <goals>
                <goal>checkin</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
    

Un problème est que je reçois ce qui suit.

  

DECONSEILLE: Reliure Mojos agrégateurs   à des phases de cycle de vie dans le POM est   considéré comme dangereux. Cette fonction a   été dépréciée. S'il vous plaît ajuster votre   POM fichiers en conséquence.

Je suis à la recherche sur la façon de le résoudre, mais, pour l'instant, il fonctionne et je vais avec lui.

Autres conseils

Qu'en est-il du réglage connectionUrl sur le checkin à un dépôt à jeter sur la boîte locale? Donc, votre caisse proviendrait du repo « central », mais votre « checkin » irait uniquement au référentiel de travail (le commit que vous voulez) et la poussée inévitable (apparemment) irait à file: /// tmp / WhoCares.

Sinon, il y a probablement une seule ligne de code dans le plugin scm pour commenter pour éviter cette poussée.

  

plugin scm Maven ne semble pas fournir un objectif « engager ». scm:checkin effectue un COMMIT et pousser. Je dois éviter la poussée.

Ensuite, le plugin est peut-être pas scm ce que vous cherchez:)

  

Je suis simplement intéressé à faire un hg commit pendant install:install. Je ne suis pas en utilisant le plugin release et ne nécessitent pas encore.

Pour être honnête, cela est un usage assez étrange. Même si je comprends ce que vous avez décrit, il ne fait pas vraiment de sens pour moi de « synchronisation » un avec un INSTANTANÉ numéro de révision. Même si vous ne commettez pas de code entre deux INSTANTANÉ construit, je ne comprends pas comment cela peut-il être un problème. Autrement dit, je ne vois pas quelle est la valeur ajoutée de forcer la validation. Et en utilisant le plug-in de sortie ne résoudra rien à mon avis.

En résumé, je ne pense pas que le plug-in scm vous permettra d'atteindre votre objectif (du moins pas sans le piratage). Je ne sais pas s'il y a un soutien mercurial dans Ant mais, s'il y a, peut-être vous devriez regarder dans cette direction au lieu (et utiliser le plugin antrun).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top