Pertanyaan Mencoba mengintegrasikan Launch4j dalam proyek Maven menggunakan plugin Alakai


Saya mencoba mengintegrasikan generasi penginstal sebagai bagian dari proses kompilasi maven.

saya telah menemukan Plugin Alakai untuk Launch4j. Saya telah membuat aplikasi Hello World sederhana menggunakan Maven. Saya telah mencoba menggunakan contoh konfigurasi yang disediakan oleh Alakai, tetapi ketika saya mengkompilasi proyek saya, saya mendapatkan:

Gagal mengeksekusi tujuan   org.bluestemsoftware.open.maven.plugin: launch4j-plugin: 1.5.0.0: launch4j   (launch4j) pada proyek Launch4j: Gagal   untuk membangun eksekutabel; mohon verifikasi   konfigurasi Anda. Aplikasi jar   tidak ada. -> [Bantuan 1]

Sayangnya, dokumentasi Alakai terbatas dan saya tidak dapat menemukan banyak dengan Googling.

  • Apakah ada yang tahu di mana konfigurasi Launch4j config.xml harus ditetapkan? Apakah ada di dalam proyek? Apakah di direktori terpisah?
  • Apakah saya perlu menggunakan plugin assembly?
  • Saya telah menginstal Launch4j di PC saya. Apakah saya perlu menentukan direktori instalasi di pom.xml saya? Jika ya bagaimana caranya?
  • Adakah yang punya contoh / contoh pom.xml operasional untuk dibagikan?

Terima kasih.


13
2018-05-19 14:51


asal


Jawaban:


  1. Tidak ada config.xml, Anda perlu mengkonfigurasi launch4j di dalam file pom.xml Anda.
  2. Anda bisa menggunakan maven-assembly-plugin, tetapi saya menyarankan Anda untuk menggunakan maven-shade-plugin.
  3. Tidak perlu menentukan instalasi launch4j, plugin ini bekerja 100% maven.
  4. Yakin. Mengikuti bayangan dan konfigurasi launch4j yang saya gunakan, yang menghasilkan dua exe, satu konsol dan satu gui, menggunakan kelas utama yang berbeda:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <shadedArtifactAttached>true</shadedArtifactAttached> <!-- Make the shaded artifact not the main one -->
        <shadedClassifierName>shaded</shadedClassifierName> <!-- set the suffix to the shaded jar -->
    </configuration>
</plugin>

<plugin>
    <groupId>org.bluestemsoftware.open.maven.plugin</groupId>
    <artifactId>launch4j-plugin</artifactId>
    <version>1.5.0.0</version>
    <executions>

        <!-- GUI exe -->
        <execution>
            <id>l4j-gui</id>
            <phase>package</phase>
            <goals>
                <goal>launch4j</goal>
            </goals>
            <configuration>
                <headerType>gui</headerType>
                <outfile>target/app-gui.exe</outfile>
                <jar>target/${artifactId}-${version}-shaded.jar</jar> <!-- 'shaded' is the value set on shadedClassifierName above -->
                <errTitle>App Err</errTitle>
                <classPath>
                    <mainClass>package.AppGUI</mainClass>
                </classPath>
                <icon>src/main/resources/icons/exeIcon.ico</icon>
                <jre>
                    <minVersion>1.5.0</minVersion>
                    <maxVersion>1.6.0</maxVersion>
                    <initialHeapSize>128</initialHeapSize>
                    <maxHeapSize>1024</maxHeapSize>
                </jre>
                <versionInfo>
                    <fileVersion>1.0.0.0</fileVersion>
                    <txtFileVersion>1.0.0.0</txtFileVersion>
                    <fileDescription>Desc</fileDescription>
                    <copyright>C</copyright>
                    <productVersion>1.0.0.0</productVersion>
                    <txtProductVersion>1.0.0.0</txtProductVersion>
                    <productName>Product</productName>
                    <internalName>Product</internalName>
                    <originalFilename>App.exe</originalFilename>
                </versionInfo>
            </configuration>
        </execution>

        <!-- Command-line exe -->
        <execution>
            <id>l4j-cli</id>
            <phase>package</phase>
            <goals>
                <goal>launch4j</goal>
            </goals>
            <configuration>
                <headerType>console</headerType>
                <outfile>target/app-cli.exe</outfile>
                <jar>target/${artifactId}-${version}-shaded.jar</jar> <!-- 'shaded' is the value set on shadedClassifierName above -->
                <errTitle>App Err</errTitle>
                <classPath>
                    <mainClass>package.AppCLI</mainClass>
                </classPath>
                <icon>src/main/resources/icons/exeIcon.ico</icon>
                <jre>
                    <minVersion>1.5.0</minVersion>
                    <maxVersion>1.6.0</maxVersion>
                    <initialHeapSize>128</initialHeapSize>
                    <maxHeapSize>1024</maxHeapSize>
                </jre>
            </configuration>
        </execution>
    </executions>
</plugin>

Alternatifnya, Anda dapat menghilangkan tag 'jar' di launch4j-plugin dan menghapus konfigurasi tambahan dari plugin warna, tetapi ketahuilah bahwa ini akan mengganti tabung utama aliran (tanpa ketergantungan yang melekat) oleh tabung berbayang (dengan tertanam dependensi), dan yang ini akan diinstal pada repo lokal Anda, atau digunakan dalam reaktor jika diperlukan.


24
2018-05-31 22:16



Untuk cara menentukan kelas utama untuk plugin warna, lihat http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html.


1
2018-01-08 00:45