Efter så mange forsøg har jeg endelig løst mit problem, og for at hjælpe andre poster jeg løsningen her.
Projektstrukturen burde være sådan her
og pom.xml skal være sådan her
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.client</groupId>
<artifactId>JavaClient</artifactId>
<version>5.2.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>JavaClient</name>
<properties>
<exec.mainClass>com.client.MainApp</exec.mainClass>
<javafx.version>2.2.67</javafx.version>
<fx.home>${java.home}/lib/jfxrt.jar</fx.home>
<javafx.tools.ant.jar>${java.home}/../lib/ant-javafx.jar</javafx.tools.ant.jar>
<javafx-dialogs.jar>${project.basedir}/lib/javafx-dialogs-0.0.1.jar</javafx-dialogs.jar>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<dist.dir>${project.build.directory}/deploy</dist.dir>
<base.dir>${project.basedir}</base.dir>
</properties>
<dependencies>
<dependency>
<groupId>org.oracle</groupId>
<artifactId>javafx</artifactId>
<version>${javafx.version}</version>
<systemPath>${fx.home}</systemPath>
<scope>system</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>xmlpull</groupId>
<artifactId>xmlpull</artifactId>
<version>1.1.3.1</version>
</dependency>
<dependency>
<groupId>xpp3</groupId>
<artifactId>xpp3_min</artifactId>
<version>1.1.4c</version>
</dependency>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>javafx-dialogs</artifactId>
<version>0.0.1</version>
<scope>system</scope>
<systemPath>${javafx-dialogs.jar}</systemPath>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<configuration>
<includes>
<include>**/*Test.class</include>
</includes>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>create-temp-jar</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target xmlns:fx="javafx:com.sun.javafx.tools.ant">
<taskdef uri="javafx:com.sun.javafx.tools.ant" resource="com/sun/javafx/tools/ant/antlib.xml"
classpath="${project.basedir}:${javafx.tools.ant.jar}:${fx.home}" />
<fx:jar
destfile="${project.build.directory}/${project.build.finalName}-temp">
<fx:application id="fxApp" name="${project.name}"
mainClass="${exec.mainClass}" />
<fx:fileset dir="${project.build.directory}/classes" />
<manifest>
<attribute name="Implementation-Vendor" value="${app.vendor}" />
<attribute name="Implementation-Title" value="${app.name}" />
<attribute name="Implementation-Version" value="1.0" />
</manifest>
</fx:jar>
<attachartifact
file="${project.build.directory}/${project.build.finalName}-temp.jar"
classifier="temp" />
</target>
</configuration>
</execution>
<execution>
<id>create-deployment-bundle</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target xmlns:fx="javafx:com.sun.javafx.tools.ant">
<taskdef uri="javafx:com.sun.javafx.tools.ant" resource="com/sun/javafx/tools/ant/antlib.xml"
classpath="${project.basedir}:${javafx.tools.ant.jar}:${fx.home}" />
<fx:deploy nativeBundles="all" width="100" height="100"
outdir="${dist.dir}" embedJNLP="true" outfile="${project.build.finalName}"
verbose="true">
<fx:application name="${project.build.finalName}"
mainClass="${exec.mainClass}" />
<fx:resources>
<fx:fileset dir="${project.build.directory}" includes="${project.build.finalName}.jar" />
</fx:resources>
<fx:info title="${project.build.finalName}" vendor="NUAXIS"
description="Test built from Java executable jar" />
<fx:permissions elevated="true" />
</fx:deploy>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptors>
<descriptor>src/main/assembly/jar-with-dependencies.xml</descriptor>
</descriptors>
<finalName>${project.build.finalName}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifestEntries>
<JavaFX-Version>${javafx.version}</JavaFX-Version>
<JavaFX-Application-Class>${exec.mainClass}</JavaFX-Application-Class>
<Main-Class>com/javafx/main/Main</Main-Class>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
Nu vil jeg forklare dig min fejl. se nærmere på byggedelen af spørgsmålet. i ant-run plugin når vi går i fx:deploy opgave her finder du ud af, at jeg har indtastning af klassesti. Jeg forkludrede denne del, som var så enkel. se nu i min Pom her. klassestien er nu opdateret. først nævner jeg base dir derefter ant-fx-plugin stien og derefter jfxrt.jar stien. jfxrt er muligvis ikke nødvendigt. efter dette har jeg fjernet afhængighedssektionen af plugin. dette er kritisk. hvis jeg ikke fjerner dette afsnit, så kigger mit antrun-plugin altid ind i maven-leverede afhængigheder, men ikke i ant-classpath. i ant-classpath rækkefølge er meget meget vigtigt. din basedir skal altid komme før ant-run.jar . det er det
Håber dette vil være nyttigt for de personer, der vil stå over for dette problem.