Maven Build Lifecycle: validate

2

Nel ciclo di vita di build in maven, ho incontrato la fase validate descritta come convalidare il progetto è corretto e tutte le informazioni necessarie sono disponibili per completare una build
1. Quali sono i punti di controllo per un progetto corretto ?
2. quali sono queste informazioni necessarie che devono essere disponibili nel completamento di una compilazione?
Potete fornire un esempio per entrambi?

    
posta Dee 24.06.2016 - 04:35
fonte

1 risposta

2

Risposta breve

  1. Dipende da te
  2. 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.

    
risposta data 30.06.2016 - 19:07
fonte

Leggi altre domande sui tag