Domanda

Quando si distribuisce un WebApp ho bisogno di aggiornare alcune variabili nelle risorse UI, decomprimere alcune risorse e concat alcuni file, attualmente questo è ottenuto tramite un compito ant.Sto cercando di gestire questo compito nel processo di build Maven usando qualcosa come questo ...

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>deploy-ui</id>
            <phase>prepare-package</phase>
            <inherited>false</inherited>
            <configuration>
                <target>
                    <property name="buildDir" value="${project.build.directory}/${project.build.finalName}" />
                    <ant antfile="build.xml" target="static-assets" />
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
.

Quanto sopra non riesce perché i file non sono ancora stati copiati nella directory di destinazione.Se ho impostato la fase per "pacchetto", l'attività ant funziona bene e tutti i file vengono creati / modificati, ma non è un aiuto come il .war è già stato costruito prima che il target della formica sia eseguito.

Fondamentalmente, ho bisogno di eseguire il bersaglio ant vicino alla fine della fase di preparazione-pacchetto.

avendo guardato sebbene Riferimento del ciclo di vita Non posso allenartiCome esporre gli obiettivi più granulari al plugin Antrun.

Qualche idea?

È stato utile?

Soluzione

Dal momento che non ho ricevuto alcuna risposta al mio commento, immagino che tu voglia stare usando maven-antrun-plugin.

Da ciò che ho imparato ed esperto, se due plugin devono essere eseguiti sulla stessa fase, quindi saranno eseguiti nell'ordine in cui sono dichiarati in pom.xml.

Per questo lavoro dovrai aggiungere il maven-war-plugin nell'elenco <plugins/> dopo il maven-antrun-plugin.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <id>deploy-ui</id>
            <phase>package</phase>
            <inherited>false</inherited>
            <configuration>
                <target>
                    <property name="buildDir" value="${project.build.directory}/${project.build.finalName}" />
                    <ant antfile="build.xml" target="static-assets" />
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <executions>
        <execution>
            <!-- First step is to disable the default-war build step. -->
            <id>default-war</id>
            <phase>none</phase>
        </execution>
        <execution>
            <!-- Second step is to create an exploded war. Done in prepare-package -->
            <id>war-exploded</id>
            <phase>prepare-package</phase>
            <goals>
                <goal>exploded</goal>
            </goals>
        </execution>
        <execution>
            <!-- Last step is to make sure that the war is built in the package phase -->
            <id>custom-war</id>
            <phase>package</phase>
            <goals>
                <goal>war</goal>
            </goals>
        </execution>
    </executions>
</plugin>
.


.

Aggiunto alcune altre esecuzioni in modo che il default-war sia per primo disabilitato, la guerra è esplosa e infine la guerra è confezionata.

Altri suggerimenti

Come hai osservato questo è un luogo in cui il ciclo di vita non fornisce la granularità necessaria.Ho risposto a un Domanda simile per qualcuno prima.Non è una risposta esatta alla tua domanda ma la tecnica può essere applicata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top