Comment sauter phase d'installation dans la construction Maven si je possède déjà cette version installée dans repo

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

  •  01-10-2019
  •  | 
  •  

Question

J'ai un projet qui se composent de 3 bibliothèques différentes. Quand je lance script d'installation, il prend toutes les bibliothèques de prise en pension et exécuter MVN installation propre sur eux. Mais cette version de la bibliothèque déjà installée en repo. Est-il possible de sauter la phase d'installation si la version en pom.xml version équivalente dans mon repo local.

Je sais que je peux utiliser repo et dépendances qui se trouve juste locale. Mais mon manque de patron que notre projet ne peut construire que des mises en pension publiques et sans nos prises en pension.

Était-ce utile?

La solution

Vous pouvez contourner comme ceci

-Dmaven.install.skip=true

<profiles>
   <profile>
     <id>skipInstall</id>
     <activation>
       <property>
         <name>maven.install.skip</name>
         <value>true</value>
       </property>
     </activation>
     <build>
       <pluginManagement>
         <plugins>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-install-plugin</artifactId>
             <executions>
               <execution>
                 <id>default-install</id>
                 <phase>none</phase>
               </execution>
             </executions>
           </plugin>
         </plugins>
       </pluginManagement>
     </build>
   </profile>

La semaine dernière Olivier Lamy patché ce JIRA.

MINSTALL-73

Autres conseils

La plupart des plugins Maven peut être ignorée en spécifiant quelque chose comme:

        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>X.Y</version>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>

vous pouvez également configurer des profils de construction définir les propriétés et l'utiliser pour déterminer la valeur. par exemple, la commande: mvn -Pexample sélectionnerait le profil « exemple ». Le POM contient alors:

...
  <properties>
    <skip.install>false</skip.install>
...
  </properties>

...
    <profile>
      <id>example</id>
      <properties>
        <skip.install>false</skip.install>
      </properties>
    </profile>
...
    <plugin>
      <artifactId>maven-install-plugin</artifactId>
      <version>X.Y</version>
      <configuration>
        <skip>${skip.install}</skip>
      </configuration>
    </plugin>
...

L'utilisation de ces ajouts POM, le comportement par défaut pour l'installation plug-in sera de réaliser son objectif par défaut, mais si le profil exemple est sélectionné, l'installation plug-in va sauter son objectif.

En utilisant ce que j'ai appris des autres réponses, ce fut le résultat le plus propre pour moi.

Dans mon super pom j'ai ajouté un pluginManagement / plugin pour désactiver par défaut et installer des phases de test par défaut lorsque le deployOnly de propriété est définie.

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.5.2</version>
                <executions>
                    <execution>
                        <id>default-install</id>
                        <configuration>
                            <skip>${deployOnly}</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <id>default-test</id>
                        <configuration>
                            <skip>${deployOnly}</skip>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

sur la ligne de commande, je peux désactiver l'installation et les phases de test en ajoutant -DdeployOnly.

mvn clean install       #build and test everything
mvn deploy -DdeployOnly #just deploy it
  

Je sais que je peux utiliser repo et dépendances qui se trouve juste locale. Mais mon manque de patron que notre projet ne peut construire que des mises en pension publiques et sans nos prises en pension.

Êtes-vous sûr bien compris ce que vous vouliez dire patron? J'interprète ci-dessus comme « ne pas installer les bibliothèques de tiers dans votre dépôt local, utilisez des bibliothèques uniquement disponible dans les dépôts publics ». Ceci est différent de « ne pas utiliser votre dépôt local » qui est fondamentalement impossible, qui est tout simplement pas comment fonctionne Maven. Je vais essayer de clarifier ce point.

En dehors de cela, je ne (parlez que repo êtes-vous? Que fait le script d'installation? Pourquoi est-ce que vous appelez installation propre sur les bibliothèques? Etc) Inscrivez-vous pas la question qui est très déroutant.

L'extension des autres réponses, de l'avenir.

plugins Maven ont une liberté étonnamment élevé, comment ils fonctionnent. S'ils veulent, ils peuvent ignorer / remplacer les paramètres pom.xml typiques. De plus, aussi le <configuration><skip>true</skip></configuration> est seulement une convention, rien un plugin pour Oblige le suivre, sauf que la plupart d'entre eux est développée ainsi.

Mes expériences avec le récent spectacle de problème, que à la fois la solution de @ Cemo et @MiloshBoroyevich devraient être utilisés , aussi le plugin nécessite à la fois pour nous laisser vraiment en paix. Plus concrètement, la seule configuration de travail par moi était le suivant:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>default-install</id>
            <phase>none</phase>
        </execution>
    </executions>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top