sql >> Database teknologi >  >> RDS >> Oracle

hvor skal jeg placere installationsressourcer (wxs-fil, dmg-script, ikon) og hvordan man konfigurerer maven antrun, når jeg implementerer selvstændig app

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.




  1. Hvad er det mindste klientfodaftryk, der kræves for at forbinde C# til en Oracle-database?

  2. hvordan man genopbygger wf_java_deferred-køen

  3. Hvor sund er din SQL-server? Proaktiv databaseovervågning er kritisk

  4. Data tutorial:Brug af vinduesfunktioner