Java 如何阻止Maven在每次项目运行时解包

Java 如何阻止Maven在每次项目运行时解包,java,hibernate,maven,netbeans,javafx,Java,Hibernate,Maven,Netbeans,Javafx,我有一个JavaFX项目,它使用Hibernate ORM,并且有Maven。每次我运行我的项目时,我都要等很长时间,因为Maven一直在解压Hibernate依赖项。这是必要的吗?或者我可以关掉它,为什么要一次又一次地打开所有的东西而不是一次?日志如下所示: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http

我有一个JavaFX项目,它使用Hibernate ORM,并且有Maven。每次我运行我的项目时,我都要等很长时间,因为Maven一直在解压Hibernate依赖项。这是必要的吗?或者我可以关掉它,为什么要一次又一次地打开所有的东西而不是一次?日志如下所示:

<?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>
                    <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>
---maven依赖插件:2.6:unpack dependencies(unpack dependencies)@SeedCalendar--- 将C:\Users\maurice.m2\repository\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\classes,其中包含“”和排除“” 将C:\Users\maurice.m2\repository\org\hibernate\hibernate core\5.2.9.Final\hibernate-core-5.2.9.Final.jar解包到C:\book\SeedCalendar\target\classes,其中包含“”和排除“” 将C:\Users\maurice.m2\repository\org\javassist\javassist\3.20.0-GA\javassist-3.20.0-GA.jar解包到C:\book\SeedCalendar\target\classes,其中包含“”和排除“” 将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.m2\repository\org\jboss\jandex\2.0.3.Final\jandex-2.0.3.Final.jar解包到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\repository\org\jboss\spec\javax\transaction\jboss-transaction-api\u 1.2\u spec\1.0.1.Final\jboss-transaction-api\u 1.2\u spec-1.0.1.Final.jar解包到C:\book\SeedCalendar\target\classes,其中包含“”和排除“” 将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,其中包含“”和排除“” ---execmaven插件:1.2.1:exec(解包依赖项)@SeedCalendar--- javafxpackager.exe已重命名为javapackager.exe。 原始文件可能会在将来的版本中被删除,以代替javapackager。 请更新您的脚本

我的文件如下所示:

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

4.0.0
com.hibernate
种子日历
1.0-快照
罐子
种子日历
UTF-8
com.hibernate.seedcalendar.MainApp
您的组织
org.apache.maven.plugins
maven依赖插件
2.6
解包依赖项
包裹
解包依赖项
系统
junit,org.mockito,org.hamcrest
${project.build.directory}/classes
org.codehaus.mojo
execmaven插件
1.2.1
解包依赖项
包裹
执行官
${java.home}/./bin/javafxpacker
-createjar
-nocss2bin
-应用类
${mainClass}
-srcdir
${project.build.directory}/classes
-奥特迪尔
${project.build.directory}
-外锉
${project.build.finalName}.jar
默认cli
执行官
${java.home}/bin/java
${runfx.args}
org.apache.maven.plugins
maven编译器插件
3.1
1.7
1.7
${sun.boot.class.path}${path.separator}${java.home}/lib/jfxrt.jar
org.apache.maven.plugins
maven surefire插件
2.16
${java.home}/lib/jfxrt.jar
org.hibernate
冬眠核心
5.2.9.最终版本

有谁能告诉我如何一步一步地关闭这个恼人的功能,如果有任何不良影响时,关闭这个自动解包模式


谢谢大家!

我已经找到了解决我自己问题的方法,让我解释一下

这个问题与javafxpackager没有任何关系。原因在于maven标准配置。默认情况下,在每个项目运行时,Maven都执行项目清理。这将删除目标/类/文件夹。这就是您的依赖项的所有未打包jar文件所在的文件夹。如果在每次新的运行中删除这些文件,那么它们必须一次又一次地解压缩。无论如何,以下是防止清洁发生的方法:

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

maven清洁插件
2.4.1
符合事实的
将此添加到POM.xml中。确保版本正确,您可以在有效的pom(即父pom+项目)中检查maven clean插件的版本
<executable>${java.home}/../bin/javapackager</executable>