Pertanyaan Menjalankan tugas semut di maven membangun fase sebelum perang dikemas?


Ketika menyebarkan webapp saya perlu memperbarui beberapa variabel dalam sumber daya UI, unzip beberapa aset dan mengkonsultasikan beberapa file, saat ini dicapai melalui tugas semut. Saya mencoba menjalankan tugas ini dalam proses pembuatan maven menggunakan sesuatu seperti ini ...

<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>

Gagal di atas karena file belum disalin ke direktori target. Jika saya mengatur fase untuk "paket", tugas semut berjalan dengan baik dan semua file dibuat / diubah, tetapi tidak membantu karena .war telah dibangun sebelum target semut dijalankan.

Pada dasarnya, saya harus menjalankan target semut saya mendekati akhir fase persiapan-paket.

Setelah melihat meskipun Referensi Siklus Hidup Saya tidak dapat menjalankan cara mengekspos Tujuan yang lebih terperinci ke plugin antrun.

Ada ide?


8
2017-10-01 10:02


asal


Jawaban:


Karena saya tidak mendapatkan jawaban atas komentar saya, saya rasa Anda ingin tetap menggunakannya maven-antrun-plugin.

Dari apa yang telah saya pelajari dan alami, jika dua plugin akan dieksekusi pada fase yang sama, maka mereka akan dieksekusi sesuai urutan yang dideklarasikan di pom.xml.

Agar ini berhasil, Anda harus menambahkan maven-war-plugin dalam <plugins/> daftar setelah 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>

Ditambah lagi beberapa eksekusi sehingga default-war pertama kali dinonaktifkan, maka perang meledak dan terakhir perang dikemas.


17
2017-10-01 11:24



Seperti yang Anda amati ini adalah tempat di mana siklus hidup tidak memberikan perincian yang diperlukan. Saya menjawab a pertanyaan serupa untuk seseorang sebelumnya. Ini bukan jawaban yang tepat untuk pertanyaan Anda tetapi teknik ini mungkin berlaku.


1
2017-10-02 13:51