2015-05-08 3 views
1

Я использую Maven в Netbeans.Maven Project всегда распаковывает библиотеки при запуске

Я просто заметил, что когда я запускаю свой проект, мне потребовалось много времени, потому что maven всегда распаковывает библиотеки.

Есть ли способ, которым maven будет распаковывать библиотеки один раз?

Вот мой pom.xml

<?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.mycompany</groupId> 
<artifactId>MvcFXv1</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>MvcFXv1</name> 
<description>A simple version of JavaFX setup as described at http://www.oracle.com/technetwork/articles/java/enterprisefxpt3-1735081.html</description> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <mainClass>org.shinobi.testapp.main.Main</mainClass> 
</properties> 

<organization> 
    <!-- Used as the 'Vendor' for JNLP generation --> 
    <name>Shinobi</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> 
    <!-- MigLayout --> 

    <dependency> 
     <groupId>com.miglayout</groupId> 
     <artifactId>miglayout-javafx</artifactId> 
     <version>4.2</version> 
    </dependency> 

    <!-- Apache Commons --> 

    <dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.6</version> 
    </dependency> 

    <!-- Spring Framework --> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.1.6.RELEASE</version> 
    </dependency> 

    <!-- Dom4j --> 
    <dependency> 
     <groupId>dom4j</groupId> 
     <artifactId>dom4j</artifactId> 
     <version>1.6.1</version> 
     <type>jar</type> 
    </dependency> 

    <!-- Jaxen --> 
    <dependency> 
     <groupId>jaxen</groupId> 
     <artifactId>jaxen</artifactId> 
     <version>1.1.6</version> 
    </dependency> 

    <!-- Hibernate Framework --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.5.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>4.2.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.common</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>4.0.1.Final</version> 
     <classifier>tests</classifier> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.0-api</artifactId> 
     <version>1.0.1.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.0.1.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.validation</groupId> 
     <artifactId>validation-api</artifactId> 
     <version>1.0.0.GA</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.4</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.logging</groupId> 
     <artifactId>jboss-logging</artifactId> 
     <version>3.1.0.CR2</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.4</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.10</version> 
    </dependency> 

</dependencies> 

Спасибо!

+0

В вашем случае, что делает exec-maven-plugin? Какую программу вызывать? –

+1

Честно говоря, я просто новичок в использовании maven. И я точно не знаю, что он делает. Netbeans сгенерировали его. – iamjc015

ответ

0

При запуске приложения exec-maven-plugin вызывает другую java-программу, исполняемый файл которой находится в каталоге $ {java.home} /../ bin/javafxpackager. Возможно, программа распаковывает библиотеки. Если вы не хотите, чтобы распаковать библиотеки, то вы можете прокомментировать, что начало плагин от

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

Или

Handle, что логика внутри этой программы.

Смежные вопросы