2013-08-21 58 views
0

我想用maven创建一个可执行的jar。我有一个java web项目,我使用m2e eclipse插件转换为maven。要创建一个可运行jar,我的pom.xml配置如下。使用maven创建一个可执行的jar

<build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 

    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.7</source> 
      <target>1.7</target> 
     </configuration> 
     </plugin> 

    <!-- to create a runnable jar --> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <configuration> 
     <archive> 
      <manifest> 
      <mainClass>com.test.main</mainClass> // main being main.java which has my main method 
      </manifest> 
     </archive> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     </configuration> 
    </plugin> 

    </plugins> 
    </build> 

然后我编辑 - >运行as->在(编辑配置)选项卡我添加“包”到目标选项卡。该项目建立成功,但是当我尝试运行jar时,我总是收到“没有找到主要清单”,我在哪里出错?

回答

1

我想你错过了插件绑定到生命周期阶段:

http://maven.apache.org/plugins/maven-assembly-plugin/usage.html#Execution:_Building_an_Assembly

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
      <archive> 
      <manifest> 
       <mainClass>com.test.main</mainClass> // main being main.java which has my main method 
      </manifest> 
      </archive> 
     </configuration> 
     <executions> 
      <execution> 
      <id>make-assembly</id> <!-- this is used for inheritance merges --> 
      <phase>package</phase> <!-- bind to the packaging phase --> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     [...] 
</project> 
+0

它的工作,但它产生的一个70MB的文件,我真的不知道这是什么一样,并是,如果真的感谢你可以向我解释这一点。 – user1801279

+0

尝试运行'mvn dependency:tree'来查看项目的所有依赖关系。你将它们全部捆绑到一个jar文件中(你可以执行'jar -tf <你的jar文件>')来查看所有这些空间的去向。您可以尝试Maven Shade插件,该插件可以选择删除未使用的.class文件。 –

相关问题