2015-06-23 54 views
0

我已经使用Maven创建了一个项目。主要想法是轻松获得依赖关系。问题是,现在我无法创建可执行文件,甚至是.jar文件。我的应用程序是一个Java原型,我正在使用Netbeans。另外我正在使用Postgree分贝。我的pom文件如下所示:创建一个可执行的java maven项目

<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.metrum</groupId> 
    <artifactId>mtuapp</artifactId> 
    <version>0.1-alpha</version> 
    <packaging>jar</packaging> 
    <repositories> 
     <repository> 
      <id>unknown-jars-temp-repo</id> 
      <name>A temporary repository created by NetBeans for libraries and jars it could not identify. Please replace the dependencies in this repository with correct ones and delete this repository.</name> 
      <url>file:${project.basedir}/lib</url> 
     </repository> 
    </repositories> 
    <dependencies> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.3.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.4-1201-jdbc41</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>3.2.2.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>3.2.2.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.4.1.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.7.4</version> 
     </dependency> 
     <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib</artifactId> 
      <version>3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>net.java.balloontip</groupId> 
      <artifactId>balloontip</artifactId> 
      <version>1.2.4.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.swinglabs</groupId> 
      <artifactId>swingx</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.swinglabs.swingx</groupId> 
      <artifactId>swingx-beaninfo</artifactId> 
      <version>1.6.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.scream3r</groupId> 
      <artifactId>jssc</artifactId> 
      <version>2.8.0</version> 
      <type>jar</type> 
     </dependency> 
    </dependencies> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.7</maven.compiler.source> 
     <maven.compiler.target>1.7</maven.compiler.target> 
    </properties> 

</project> 

我其实我想创建一个安装程序到我的应用程序。

---编辑---

我试图用maven-jar-plugin创建和可执行的JAR文件的建议。我的新POM文件是:

<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.metrum</groupId> 
    <artifactId>mtuapp</artifactId> 
    <version>0.1-alpha</version> 
    <packaging>jar</packaging> 

    <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.metrum.mtuapp.main.Main</mainClass> 
         </manifest> 
        </archive> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.3.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.4-1201-jdbc41</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>3.2.2.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>3.2.2.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.4.1.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.7.4</version> 
     </dependency> 
     <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib</artifactId> 
      <version>3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>net.java.balloontip</groupId> 
      <artifactId>balloontip</artifactId> 
      <version>1.2.4.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.swinglabs</groupId> 
      <artifactId>swingx</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.swinglabs.swingx</groupId> 
      <artifactId>swingx-beaninfo</artifactId> 
      <version>1.6.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.scream3r</groupId> 
      <artifactId>jssc</artifactId> 
      <version>2.8.0</version> 
      <type>jar</type> 
     </dependency> 
    </dependencies> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.7</maven.compiler.source> 
     <maven.compiler.target>1.7</maven.compiler.target> 
    </properties> 

</project> 

有了这个我越来越:

java -jar mtuapp-0.1-alpha.jar 


Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/c 
ontext/annotation/AnnotationConfigApplicationContext 
     at com.metrum.mtuapp.main.Main.<clinit>(Main.java:20) 
Caused by: java.lang.ClassNotFoundException: org.springframework.context.annotat 
ion.AnnotationConfigApplicationContext 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 1 more 

回答

1

我可以看到你的项目创建使用maven所以在目标文件夹中创建你的jar文件中root你只需要执行目标mvn clean package来生成它,但这不会是一个可执行的jar文件。

如果你想创建一个安装程序并创建一个.exe文件,你需要使用另一个工具,我建议你使用http://www.jrsoftware.org/isdl.php,你可以找到文档here

---- ----编辑

如果你想创建你有一个插件添加到与下一行的POM文件可执行的JAR:

<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.mypackage.MyClass</mainClass> 
      </manifest> 
     </archive> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

检查完整信息here

如果要包括你可以使用Maven的组装插件

0 Maven的依赖
+0

当我尝试使用java -jar运行jar文件时,它返回它没有主清单中的任何属性......你知道它是什么意思吗? –

+0

这意味着你的jar文件是不可执行的,如果你想创建一个可执行的jar文件,你需要使用maven插件检查maven-jar-plugin为此目的 –

+0

你可以给我一些方向来搜索它吗? –