web-dev-qa-db-fra.com

Maven skip compile

Je veux utiliser Maven pour exécuter un certain plug-in qui n'a besoin que du code source, mais je ne veux pas que Maven compile quoi que ce soit (principalement parce que le projet ne compile tout simplement pas).

Comment puis-je dire à Maven de sauter l'étape de compilation et de simplement lancer son plug-in, puis de regrouper les ressources générées dans un JAR Nice? (La procédure de la dernière étape m'est déjà connue.)

Informations supplémentaires:

Nous avons donc essayé beaucoup de choses en ce moment, par exemple:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <excludes>
            <exclude>**/*</exclude>
        </excludes>
        <source>1.7</source>
            <target>1.7</target>
    </configuration>
    <executions>
        <execution>
            <phase>deploy</phase>
        </execution>
    </executions>
</plugin>

Mais quand on fait un mvn package nous obtenons ceci:

[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ project ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling ALOTOF source files to /home/myname/dir/dir/project/target/classes

message édité ofc.

23
salbeira
<plugin>
   <groupId>org.Apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <executions>
     <execution>
       <id>default-compile</id>
       <phase>compile</phase>
       <goals>
          <goal>compile</goal>
       </goals>
       <configuration>
         <skipMain>true</skipMain> <--Skip
       </configuration>
     </execution>
   </executions>
</plugin>

Réglez ce paramètre sur "true" pour contourner la compilation des sources principales. Son utilisation n'est PAS RECOMMANDÉE, mais assez pratique à l'occasion. La propriété utilisateur est: maven.main.skip.

mvn package -Dmaven.main.skip

21

La fonctionnalité Maven est en partie organisée en plugins, qui contient des objectifs. Ces objectifs peuvent être exécutés sans faire partie d'un cycle de vie. Par exemple, pour l'objectif de pot du plug-in jar, vous invoquerez:

mvn jar:jar

Si vous parcourez la liste des plugins disponibles vous trouverez probablement la fonctionnalité que vous recherchez. S'il est nécessaire, vous pouvez même définir un "assemblage" pour sélectionner les fichiers que vous souhaitez regrouper dans une archive.

7
Matthias

Pour empêcher la compilation de Maven par défaut, assurez-vous d'abord que la configuration de maven-compiler-plugin a seIncrementalCompilation = false:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <useIncrementalCompilation>false</useIncrementalCompilation>
    </configuration>
</plugin>

De plus, dans le cas où votre profil Maven utilise maven-clean-plugin, alors par défaut, il découvre et supprime les répertoires configurés dans project.build.directory , project.build.outputDirectory , project.build.testOutputDirectory et project.reporting.outputDirectory .

Pour désactiver ces nettoyages par défaut, ajoutez à la configuration de maven-clean-plugin: excludeDefaultDirectories = true:

<excludeDefaultDirectories>true</excludeDefaultDirectories>
3
Noam Manos