我刚刚提出了一个关于使用 javafxpackager创建 JavaFX jar的问题,你可以看到它 here.我的问题是我无法在清单中包含类路径.好吧,当我在等待答案时,我尝试了maven-antrun-plugin.它运行良好,我可以
FinalJar.jar lib |_{all dependencies here}
我的清单文件通过JavaFX-Class-Path属性指向依赖项.如果我把依赖项放在jar中,就像我想要的那样,它找不到我的依赖项.有帮助吗?
编辑:这是将依赖项添加到jar中的步骤,它位于pom.xml中:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>package</phase> <configuration> <target> <taskdef name="jfxjar" classname="com.sun.javafx.tools.ant.FXJar" classpathref="maven.plugin.classpath" /> <jfxjar destfile="${project.build.directory}/dist/${project.build.finalName}"> <fileset dir="${project.build.directory}/classes" /> <!-- Adds the dependencies to jar --> <fileset dir="${project.build.directory}/lib/" includes="*.jar" /> <application name="${project.name}" mainClass="com.google.code.mzplay.principal.PrincipalFX" /> <resources> <!-- Adds the dependencies to classpath --> <fileset dir="${project.build.directory}/lib/" includes="*.jar" /> </resources> </jfxjar> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>com.oracle</groupId> <artifactId>ant-javafx</artifactId> <version>${javafx.version}</version> <systemPath>${java.home}/../lib/ant-javafx.jar</systemPath> <scope>system</scope> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>javafx</artifactId> <version>${javafx.version}</version> <systemPath>${java.home}/lib/jfxrt.jar</systemPath> <scope>system</scope> </dependency> </dependencies> </plugin>最后,我的POM的“构建”部分变成了这个(你可以看到它也有一个焊接部分),自从我使用它以来已经很久了,所以我甚至不知道它是否已经好了
<build> <finalName>JarName</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.4</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.3</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <includeScope>runtime</includeScope> <outputDirectory>${project.build.directory}/dist/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>package</phase> <configuration> <target> <taskdef name="jfxjar" classname="com.sun.javafx.tools.ant.FXJar" classpathref="maven.plugin.classpath" /> <jfxjar destfile="${project.build.directory}/dist/${project.build.finalName}"> <fileset dir="${project.build.directory}/classes" /> <application name="${project.name}" mainClass="com.google.code.mzplay.principal.WeldJavaFXLauncher" /> <resources> <fileset dir="${project.build.directory}/dist/" includes="lib/*.jar" /> </resources> </jfxjar> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>com.oracle</groupId> <artifactId>ant-javafx</artifactId> <version>${javafx.version}</version> <systemPath>${java.home}/../lib/ant-javafx.jar</systemPath> <scope>system</scope> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>javafx</artifactId> <version>${javafx.version}</version> <systemPath>${java.home}/lib/jfxrt.jar</systemPath> <scope>system</scope> </dependency> </dependencies> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>2.0</version> </plugin> </plugins> <pluginManagement> <plugins> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <versionRange>[2.0,)</versionRange> <goals> <goal>copy-dependencies</goal> </goals> </pluginExecutionFilter> <action> <execute /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> </build>