2017-04-13 13 views
0

私は、Hibernate ORMを使用し、Mavenを持つJavaFXプロジェクトを持っています。私のプロジェクトを実行するたびに、MavenがHibernateの依存関係を解凍し続けるので、実行するためには何年も待たなければなりません。これは必須ですか?または、私はそれをオフにすることができます、なぜ一度の代わりに何度も何度も何度も展開する必要がありますか?ログには、次のようになります。すべてのプロジェクト実行時にMavenのアンパックを停止する方法

--- Mavenの依存性 - プラグイン:2.6:解凍-依存関係(解凍-依存関係)@ SeedCalendar --- 開梱C:\ Users \ユーザーmaurice.m2リポジトリ\ \ ORG \ hibernate-javax-persistence \ hibernate-jpa-2.1-api \ 1.0.0.Final \ hibernate-jpa-2.1-api-1.0.0.Final.jarをC:\ book \ SeedCalendar \ target \ "除外" " C:\ Users \ maurice.m2 \ repository \ org \ hibernate \ hibernate-core \ 5.2.9.Final \ hibernate-core-5.2.9.Final.jarをC:\ book \ SeedCalendarにアンパックするC:\ Users \ maurice.m2 \ repository \ org \ javassist \ javassist \ 3.20.0-GA \ javassist-3.20.0-GA.jarをC:\に展開すると、\ target \ classesには ""が含まれ、除外されます。 book \ SeedCalendar \ target \ classesには「」が含まれ、除外は「」を含む Un C:\ Users \ maurice.m2 \ repository \ antlr \ antlr \ 2.7.7 \ antlr-2.7.7.jarをC:\ book \ SeedCalendar \ target \ classesにパッケージ化し、 ""を含め、除外する " アンパックC: \ users \ maurice.m2 \ repository \ com \ fasterxml \ classmate \ 1.3.0 \ classmate-1.3.0.jarをC:\ book \ SeedCalendar \ target \ classesに ""を含め、除外する " アンパックC:\ Users \ maurice.m2 \ repository \ dom4j \ dom4j \ 1.6.1 \ dom4j-1.6.1.jarをC:\ book \ SeedCalendar \ target \ classesに ""を含めて除外する " C:\ Users \ mauriceを展開するC:\ book \ SeedCalendar \ target \ classesには ""が含まれ、除外は ""となります。 アンパックC:\ Users \ maurice.m2 \ repository \ org \ jboss \ logging \ jboss-logging \ 3.3.0.Final \ jboss-logging-3.3.0.Final.jarをC:\ book \ SeedCalendar \ target \ classesにインクルードします。 ""を除外します。 C:\ Users \ maurice.m2 \ repを展開します。 ository¥org¥jboss¥spec¥javax¥transaction¥jboss-transaction-api_1.2_spec¥1.0.1.Final¥jboss-transaction-api_1.2_spec-1.0.1.Final.jar to C:\ book \ SeedCalendar \ target C:\ Users \ maurice.m2 \ repository \ org \ hibernate \ common \ hibernate-commons-annotations \ 5.0.1.Final \ hibernate-commons-annotations-5.0.1を展開すると、 .Final.jarをC:\ book \ SeedCalendar \ target \ classesに含めると ""を除外します。 --- exec-maven-plugin:1.2.1:exec(unpack-dependencies)@ SeedCalendar --- javafxpackager .exeの名前がjavapackager.exeに変更されました。 javapackagerの代わりに、元のファイルが将来のリリースで削除される可能性があります。 スクリプトを更新してください。

マイPOMfileは次のようになります。

<?xml version="1.0" encoding="UTF-8"?> 
<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.hibernate</groupId> 
<artifactId>SeedCalendar</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>SeedCalendar</name> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <mainClass>com.hibernate.seedcalendar.MainApp</mainClass> 
</properties> 

<organization> 
    <!-- Used as the 'Vendor' for JNLP generation --> 
    <name>Your Organisation</name> 
</organization> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <id>unpack-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>unpack-dependencies</goal> 
        </goals> 
        <configuration> 
         <excludeScope>system</excludeScope> 
         <excludeGroupIds>junit,org.mockito,org.hamcrest</excludeGroupIds> 
         <outputDirectory>${project.build.directory}/classes</outputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2.1</version> 
      <executions> 
       <execution> 
        <id>unpack-dependencies</id> 

        <phase>package</phase> 
        <goals> 
         <goal>exec</goal> 
        </goals> 
        <configuration> 
         <executable>${java.home}/../bin/javafxpackager</executable> 
         <arguments> 
          <argument>-createjar</argument> 
          <argument>-nocss2bin</argument> 
          <argument>-appclass</argument> 
          <argument>${mainClass}</argument> 
          <argument>-srcdir</argument> 
          <argument>${project.build.directory}/classes</argument> 
          <argument>-outdir</argument> 
          <argument>${project.build.directory}</argument> 
          <argument>-outfile</argument> 
          <argument>${project.build.finalName}.jar</argument> 
         </arguments> 
        </configuration> 
       </execution> 
       <execution> 
        <id>default-cli</id> 
        <goals> 
         <goal>exec</goal>        
        </goals> 
        <configuration> 
         <executable>${java.home}/bin/java</executable> 
         <commandlineArgs>${runfx.args}</commandlineArgs> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin>   
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
       <compilerArguments> 
        <bootclasspath>${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar</bootclasspath> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.16</version> 
      <configuration> 
       <additionalClasspathElements> 
        <additionalClasspathElement>${java.home}/lib/jfxrt.jar</additionalClasspathElement> 
       </additionalClasspathElements> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<dependencies> 
<dependency> 
<groupId>org.hibernate</groupId> 
<artifactId>hibernate-core</artifactId> 
<version>5.2.9.Final</version> 

誰も私はこの迷惑な機能をオフにすると、任意の悪い影響があるかどうかステップバイステップで教えてもらえますこの自動解凍モードをオフにするとどうなりますか?

ありがとうございました!

+1

これはMavenに組み込まれた動作ではありません。これは明示的にビルドで要求されています(アンパック依存関係の実行)。なぜビルドでこれを行う必要がありますか? – radai

+0

私は知っていません、私はPOMファイルを自分自身で改ざんしています。私はNetbeansに標準のJavaFX Mavenプロジェクトを作成させます。開梱された大虐殺を止めるためには、どの部分を削除すべきですか? – Maurice

+0

問題は単純にMavenの概念の誤解に基づいていますが、何かのスクリプトを作成しようとするよりも、単純に悪いビルド... unpack-dependenciesの結果となるケースは、誤解... execを使う方が良いでしょう:exec-maven-pluginのjava goalはクラスパス上のすべてのdepsをすでに持っているからです。そう...クリーンアップするにはビルド全体を完全に理解する必要があります。あなたはそれをきれいにすることができます...そしてそれが正常に動作するように... – khmarbaise

答えて

1

私は自分の問題の解決策を見つけました。私に説明しましょう。

この問題は、javafxpackagerとはまったく関係ありません。原因は、標準の構成にあります。プロジェクトを実行するたびに、Mavenはデフォルトでプロジェクトをクリーンアップします。これは、ターゲット/クラス/フォルダを削除します。それはあなたの依存関係の全ての展開されたjarファイルが置かれている同じフォルダです。それらが新しい毎回の実行で削除されるなら、それらは何度も何度も展開されなければなりません。とにかく、クリーンが起こらないようにする方法をご紹介します。

<plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <version>2.4.1</version> 
    <configuration> 
    <skip>true</skip> 
    </configuration> 
</plugin> 

これをPOM.xmlに追加します。バージョンが正しいことを確認する有効なpom(その親のpom +プロジェクトPOMを結合したもの)のMavenクリーンプラグインのバージョンを確認できます。 netbeansでは、プロジェクトのpom.xmlファイルを開いたときに、有効なタブの下で読み取り専用に有効なpom.xmlを見ることができます。

はソリューションは、この簡単pffffを知っていたことはありません。..

EDIT:

あなたはスキップタグによる誤差を避けるために別の調整をする必要があります。

    <execution> 
        <id>default-cli</id> 
        <goals> 
         <goal>exec</goal>        
        </goals> 
        <configuration> 
           <skip>true</skip> 
         <executable>${java.home}/bin/java</executable> 
         <commandlineArgs>${runfx.args}</commandlineArgs> 
        </configuration> 
       </execution> 

EDIT 2:NetBeansでクリーンを使用する能力を保持しながら、あなたのjarファイルを削除からMavenを防ぐために、相続人は別の方法で、このようにだけでなく、デフォルト-CLIの構成部分にスキップコマンドを追加してください。

<plugin> 
<artifactId>maven-clean-plugin</artifactId> 
    <version>2.4.1</version> 
<configuration> 
    <excludeDefaultDirectories>true</excludeDefaultDirectories> 
    <filesets> 
     <!-- delete directories that will be generated when you 
      start the develpment server/client in eclipse 
     --> 
     <fileset> 
      <directory>target/classes</directory> 
      <excludes> 
       <exclude>**/*</exclude> 
      </excludes> 
     </fileset> 
    </filesets> 
</configuration> 

+0

何とか表示されていません... f が正しいことを確認してください – Maurice

0

私はPOMファイルに

<executable>${java.home}/../bin/javafxpackager</executable> 

を見つけたので

<executable>${java.home}/../bin/javapackager</executable> 

に変更し、すべてがうまく動作するようです。

関連する問題