2017-01-12 2 views
0

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

Что я хочу сделать прямо сейчас, это пакет моего проекта для распространения и возможность переноса файла на другой компьютер/ноутбук для открытия и использования человеком.

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

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

Вот моя структура проекта HERE

Вот мой 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>1</groupId> 
    <artifactId>Fin</artifactId> 
    <version>0.0.6-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>AinsfieldFin</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi</artifactId> 
    <version>3.14</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>3.14</version> 
    </dependency> 

    <dependency> 
    <groupId>org.docx4j</groupId> 
    <artifactId>docx4j</artifactId> 
    <version>2.8.0</version> 
    </dependency> 

    <dependency> 
    <groupId>org.apache.xmlgraphics</groupId> 
    <artifactId>batik-bridge</artifactId> 
    <version>1.7</version> 
    </dependency> 
    </dependencies> 



    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.4.3</version> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <transformers> 
       <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
        <mainClass>com.Fin.index</mainClass> 
       </transformer> 
       </transformers> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.19.1</version> 
       <configuration> 
        <argLine>-Dfile.encoding=UTF-8</argLine> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <encoding>UTF-8</encoding> 
        <Version>3.1</Version> 
       </configuration> 
      </plugin> 

    </plugins> 
    </build> 
</project> 

Вот файл index.java

package com.Fin; 

//swing imports 

import com.Fin.process.ManipulationExcel; 
import com.Fin.process.ManipulationWord; 


public class index { 

    //declarations 


    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        index window = new index(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the application. 
    */ 
    public index() { 
     initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 
      // present layout and app functions 
    } 
} 

и я использую eclipse в качестве моей IDE

Заранее благодарю за предоставленную помощь

ПОСТАНОВИЛИ: Мой 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>1</groupId> 
    <artifactId>Fin</artifactId> 
    <version>0.1.1</version> 
    <packaging>jar</packaging> 

    <name>AinsfieldFin</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi</artifactId> 
    <version>3.14</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi-ooxml</artifactId> 
     <version>3.14</version> 
    </dependency> 

    <dependency> 
    <groupId>org.docx4j</groupId> 
    <artifactId>docx4j</artifactId> 
    <version>2.8.0</version> 
    </dependency> 

    <dependency> 
    <groupId>org.apache.xmlgraphics</groupId> 
    <artifactId>batik-bridge</artifactId> 
    <version>1.7</version> 
    </dependency> 
    </dependencies> 



    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.4.3</version> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
      <configuration> 
       <transformers> 
       <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
        <mainClass>com.Fin.index</mainClass> 
       </transformer> 
       </transformers> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
     <plugin> 
       <!-- Build an executable JAR --> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <classpathPrefix>lib/</classpathPrefix> 
          <mainClass>com.Fin.index</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.19.1</version> 
       <configuration> 
        <argLine>-Dfile.encoding=UTF-8</argLine> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <encoding>UTF-8</encoding> 
        <Version>3.1</Version> 
       </configuration> 
      </plugin> 

    </plugins> 
    </build> 
</project> 
+0

Может быть что-то как [это] (http://stackoverflow.com/questions/24899985/this-project-cannot-be-added-because-it-does-not-produce-a-jar-file-using-an-ant/24900260 # 24900260) может помочь – MadProgrammer

ответ

1

Вы можете сделать это, используя эту часть внутри pom.xml (изменить основное местоположение класса:

<build> 
     <plugins> 
      <plugin> 
       <!-- Build an executable JAR --> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <classpathPrefix>lib/</classpathPrefix> 
          <mainClass>com.your.mainClass</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
+0

Здравствуйте. Спасибо за вашу помощь, но я не понимаю, что вы имеете в виду, если я изменю свое местоположение основного класса, он должен работать? Я заменил часть, которую вы мне сказали, и я получил еще одну банку, которая, когда я запускаю, ничего не происходит. На всякий случай я делаю что-то неправильно, я делаю «Run as»> «Maven Build ...»>, а затем как цель «пакет» –

+0

Привет, там вы разместили свой основной класс. Место как com.example.Class для тега . Вы должны сделать mvn clean install, а затем перейти в цель и попробовать java -jar nameOfJar.jar –

+0

Это помогло загрузиться. Это и было видно, что мое приложение выдает ошибку с нулевым указателем! Я исправил ошибку и ее работу сейчас! ЖИЗНЬ СПАСЕНИЯ! –