Risposta breve
- Dipende da te
- Dipende da te
Risposta lunga
Perché? Perché per impostazione predefinita (ad es. Su un progetto pulito, vuoto senza obiettivi plugin definiti dall'utente), mvn validate
non fa nulla.
Perché? Una fase di costruzione comprende gli obiettivi del plugin. Nessun obiettivo per una fase? La fase non fa nulla.
Dalla sezione Build Lifecycle Nozioni di base del Introduzione alla guida del ciclo di vita di Build :
Furthermore, a build phase can also have zero or more goals bound to
it. If a build phase has no goals bound to it, that build phase will
not execute. But if it has one or more goals bound to it, it will
execute all those goals
Questo significa che, a meno che tu dichiari un obiettivo plugin associato alla fase validate
, la fase validate
non farà nulla.
La definizione che hai trovato non sta dicendo che qualcosa accadrà durante la fase di costruzione, ma piuttosto se vuoi che un'azione si verifichi in quella fase ( cioè passo) del ciclo di vita della build, quindi quella è la fase in cui l'obiettivo è vincolato.
validate the project is correct and all necessary information is available to complete a build
Questa è una linea guida su come organizzare i plug-in in modo che vengano eseguiti in modo efficiente e nell'ordine previsto, al momento previsto.
Ad esempio, diciamo che abbiamo un nuovo progetto Maven vuoto senza plugin di build definiti. Se dovessimo eseguire mvn verify
, Maven farà clic su ciascuna fase di build fino alla fase di verifica inclusa. Potremmo aspettarci che l'output sia vuoto, tuttavia ci sono impostazioni predefinite Built-in Connessioni del ciclo di vita , quindi il nostro output includerà tutti gli obiettivi predefiniti:
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ MavenTest ---
...
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MavenTest ---
...
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ MavenTest ---
...
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ MavenTest ---
...
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ MavenTest ---
Per te, una metrica di un progetto "corretto" può essere che lo stile del codice soddisfa alcuni criteri, quindi diciamo aggiungiamo maven-checkstyle-plugin al nostro progetto Maven altrimenti vuoto:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.17</version>
<executions>
<execution>
<id>verify-style</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
... e quindi riesegui mvn verify
:
[INFO] --- maven-checkstyle-plugin:2.17:check (verify-style) @ MavenTest ---
...
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ MavenTest ---
...
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MavenTest ---
...
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ MavenTest ---
...
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ MavenTest ---
...
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ MavenTest ---
Poiché abbiamo dichiarato un plug-in e gli abbiamo detto di eseguirlo come parte della fase validate
, la fase validate
ora farà effettivamente qualcosa.
Per illustrare ulteriormente il punto, potremmo rimuovere di nuovo il plug-in ed eseguire mvn validate
, e vedere che non succede nulla, perché non ci sono associazioni predefinite per la fase validate
:
C:\workspace\MavenTest>mvn validate
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building MavenTest 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.078s
[INFO] Finished at: Thu Jun 30 11:56:54 CDT 2016
[INFO] Final Memory: 2M/15M
[INFO] ------------------------------------------------------------------------
Come per un esempio di controllo della disponibilità di "informazioni necessarie", una situazione potrebbe essere la convalida che certi file di configurazione in un progetto hanno determinate informazioni. Ancora una volta, dipende da te in base al tuo caso d'uso.