Я использую Maven для создания проекта JavaFx в Windows и Mac. Я использую Maven-ant-plugin для сборки своего пакета, и мой build.xml содержит несколько блоков fx: secondaryLauncher. Вторичные пусковые установки позволяют вам создавать дополнительные исполняемые файлы в каталоге вашего приложения, которые будут запускать классы, отличные от вашего основного класса.
Вот образец из официальной документации:
<fx:info title = "Test Suite"/>
<fx:secondaryLauncher
mainClass = "samples.TestSuite"
name = "Suite Applications"/>
shortcut = "true"/>
<fx:secondaryLauncher name = "Editor">
<fx:bundleArgument arg = "icon" value = "../resources/editor.ico"/>
</fx:secondaryLauncher>
<fx:secondaryLauncher name = "Spreadsheet">
<fx:bundleArgument arg = "icon" value = "../resources/spreadsheet.ico"/>
</fx:secondaryLauncher>
Когда я переключился с Java 8 на Java 10, пакет, который maven создает с помощью maven-ant-plugin, перестал создавать вторичные программы запуска в Mac OSX. Блоки fx: secondaryLauncher, похоже, игнорируются упаковщиком.
Пакет Windows ДЕЙСТВИТЕЛЬНО содержит вторичные программы запуска, и после небольшого исследования я обнаружил, что с момента выпуска Java 9 - «Множественные точки входа поддерживаются только для приложений Windows и Linux» (полная документация здесь: https://docs.oracle.com/javase/9/deploy/self-conolated-application-packaging.htm#JSDPG1000).
Есть ли у кого-нибудь идеи по поводу хорошей альтернативы вторичным лаунчерам? Я бы предпочел свести к минимуму различия между процессом сборки Windows и Mac OSX (хотя, возможно, в этот раз это не удастся ;-)) Спасибо!




После исследования нескольких возможных решений выяснилось, что следующее решение является лучшим:
у этого есть несколько преимуществ: