#maven #izpack
#maven #izpack
Вопрос:
Я использую Maven и izpack-maven-plugin для одного из моих Java-проектов.
Мои файлы izpack находятся в $ {basedir}/izpack.
Мой install.xml файл находится в ${basedir}/src/main/filter и фильтруется на этапе упаковки
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/filter</directory>
<targetPath>${basedir}/izpack</targetPath>
<includes>
<include>install.xml</include>
</includes>
</resource>
</resources>
Плагин в pluginManagement
<plugin>
<groupId>org.codehaus.izpack</groupId>
<artifactId>izpack-maven-plugin</artifactId>
<version>5.0.0-beta6</version>
</plugin>
Плагин в сборке
<plugin>
<groupId>org.codehaus.izpack</groupId>
<artifactId>izpack-maven-plugin</artifactId>
<configuration>
<installFile>${basedir}/izpack/install.xml</installFile>
<baseDir>${basedir}/izpack</baseDir>
<installerType>standard</installerType>
</configuration>
</plugin>
Мой install.xml файл закрывается просто (только один пакет, содержащий 3 jar)
Когда я запускаю цель izpack: izpack, все выглядит нормально.
Проблема в том, что сгенерированный install jar может быть запущен только тогда, когда он находится в папке, имя которой начинается с «izpack». Случай 1: jar не в папке «izpack *» — двойной щелчок ничего не делает — java — jar возвращает это
Exception in thread "AWT-EventQueue-0" com.izforge.izpack.api.exception.IzPackException: com.izforge.izpack.api.exception.MergeException: Could not find class TargetPanel : Current classpath is at com.izforge.izpack.installer.bootstrap.InstallerGui$1.run(InstallerGui.java:57)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.izforge.izpack.api.exception.MergeException: Could not find class TargetPanel : Current classpath is
at com.izforge.izpack.merge.resolve.ClassPathCrawler.searchClassInClassPath(ClassPathCrawler.java:125)
at com.izforge.izpack.installer.manager.PanelManager.loadPanelsInContainer(PanelManager.java:72)
at com.izforge.izpack.installer.base.InstallerController.preloadInstaller(InstallerController.java:30)
at com.izforge.izpack.installer.bootstrap.InstallerGui$1.run(InstallerGui.java:50)
... 8 more
Случай 2: jar в папке «izpack*»
— двойной щелчок выполняется нормально
Есть идеи?
Спасибо.
Ответ №1:
Не могли бы вы столкнуться с этой ошибкой open izpack?
Комментарии:
1. Спасибо. Я не нашел эту проблему.
2. Есть решение вслух: использовать версию плагина 1.0-alpha-5. Но тогда конфигурация должна использовать следующие атрибуты: <installerFile>, <izpackBasedir> и <kind>. Но я еще не нашел способ присвоить имя сгенерированному jar и переместить его в $ {basedir} / target. На данный момент это ${basedir}/izpack/install.xml.jar
Ответ №2:
Я нашел обходной путь для этой проблемы. (Еще раз спасибо, Рагурам, что показал мне путь)
Я использую версию 1.0-alpha-5
<plugin>
<groupId>org.codehaus.izpack</groupId>
<artifactId>izpack-maven-plugin</artifactId>
<version>1.0-alpha-5</version>
</plugin>
Атрибуты, используемые плагинами, должны быть изменены
<plugin>
<groupId>org.codehaus.izpack</groupId>
<artifactId>izpack-maven-plugin</artifactId>
<configuration>
<!-- For 1.0-alpha-5 version -->
<installerFile>${basedir}/target/${project.name}</installerFile>
<izpackBasedir>${basedir}/izpack</izpackBasedir>
</configuration>
<executions>
<execution>
<id>izpack</id>
<phase>package</phase>
<goals>
<goal>izpack</goal>
</goals>
</execution>
</executions>
</plugin>