sql >> データベース >  >> RDS >> Oracle

インストーラーリソース(wxsファイル、dmg-script、icon)をどこに配置する必要があり、自己完結型アプリをデプロイするときにMavenantrunを構成する方法

    何度も試した結果、私は自分の問題を解決しました。他の人を助けるために、ここに解決策を投稿しています。

    プロジェクトの構造は次のようになります

    そしてpom.xmlはこのようになります

    <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>
    

    今、私はあなたに私の間違いを説明します。質問のビルド部分をよく見てください。ここでfx:deployタスクを実行すると、ant-runプラグインで、クラスパスのエントリがあることがわかります。私はとても単純なこの部分を台無しにしました。ここで私のポンポンを見てください。クラスパスが更新されました。最初にベースディレクトリ、次にant-fx-pluginパス、次にjfxrt.jarパスについて説明します。 jfxrtは必要ないかもしれません。この後、プラグインの依存関係セクションを削除しました。これは重要です。このセクションを削除しない場合、私のantrunプラグインは常にmavenが提供する依存関係を調べますが、ant-classpathは調べません。 ant-classpathの順序は非常に重要です。あなたのbasedirは常にant-run.jarの前に来なければなりません。それだけです

    これがこの問題に直面する人に役立つことを願っています。




    1. 適切なツールにより、チューニングが迅速に機能します

    2. SQLServerデータベースで一意の制約を持つ列のリストを取得する方法-SQLServer/TSQLチュートリアルパート98

    3. アクティブな接続がある場合にPostgreSQLデータベースを削除するにはどうすればよいですか?

    4. 最大値を見つけて、SQLサーバーの別のフィールドから対応する値を表示します