我希望为一个稳定的JavaFX(Java 8)Maven构建设置一个原型,它将生成一个可执行的JAR(始终)从命令行运行。并且最好不需要构建UberJar or similar。
当我们使用Netbeans' Maven JavaFX '原型运行后,生成JAR文件。随着项目的发展,我们发现有时JAR不会从命令行运行。需要进行一些Maven POM编辑才能鼓励'程序从命令行再次运行。这适用于Linux和Windows。
这也直接发生在ZenJava JavaFX原型上,例如:项目artifactId = xx:
java -jar target\xx.jar
no main manifest attribute, in target\xx.jar
这只是来自mavan generate
命令。有问题的两个原型的细节是:
zenjava
netbeans的
比较生成的POM文件,显示codehaus.mojo(netbeans)在构建中使用这些插件:
任何一个项目都可以在Netbeans IDE中快乐地运行。当我们想要在命令行上进行测试时,就会出现挑战。当构建看起来像这样的局外人不稳定时,它在外部并不是最好的外观。
出现的问题是关于制作JavaFX命令行可执行JAR文件的要求是什么?对于JDK 8及更高版本。
是否有可供选择的JavaFX原型用于构建具有相关JAR-s的项目并从命令行运行?
当构建的JAR在命令行上运行时,Netbeans(说)允许执行JAR的原因是什么?
zenjava原型运行" Java -jar
"
mvn archetype:generate -DarchetypeGroupId=com.zenjava -DarchetypeArtifactId=javafx-basic-archetype ... -DartifactId=xx
mvn install
java -jar target/xx-001.jar
在为更大的项目构建JAR时会对maven-dependency-plugin
和maven-compiler-plugin
产生什么影响?
毋庸置疑,Maven生成和构建步骤正在使用JDK Java环境。但执行java -jar target/xx-001.jar
需要在简单的JRE(没有JDK)下运行。我想问题#4是一个漫长的过程,除非你是一个拥有 biggish JavaFX项目的人并且已经解决了这个问题。建议欢迎。
答案 0 :(得分:0)
提到:我是javafx-maven-plugin(和原型)的维护者。
回答你的问题3:
您必须从插件中调用GENERATED jar文件,该插件位于target/jfx/app/yourapp.jar
生成的jar文件将引用所有必需的依赖项,这些依赖项在其中的META-INF/MANIFEST.MF
文件中注明。在创建该jar文件时,会扫描pom以查找运行时依赖项,这些文件将放在target/jfx/app/lib
- 文件夹中。将您的应用程序捆绑到本机捆绑包时,JRE会被放置在target/jfx/native/
- 文件夹下生成的启动器旁边。
让您对您的问题感到困惑:混合CLI和GUI应用程序可能会导致问题,但我想这只是您的特殊要求:)
修改强>:
调用mvn install
不会在没有特殊配置的情况下生成jfx-jar,您必须调用mvn jfx:jar
或mvn jfx:native
来调用插件的MOJO。有关更轻松的配置,请访问我们的配置网站:http://javafx-maven-plugin.github.io/