2015-05-08 111 views
-1

我有一个maven eclipse项目,我想从命令行导出为可执行jar文件。项目中还有外部的图书馆罐子。如何从命令行获取包含所有库jar的可执行jar文件?导出为可执行jar文件

编辑:: 现在有一个challenge.There实际上是两个projects.One是PROJECT等为Project_Framework。这两个文件夹都有pom.xml。依赖关系写入pom.xmlPROJECT文件夹中。 PROJECT取决于Project_Framework。在添加maven-shade插件后,它说它无法找到Project_Framework的快照依赖项。我该如何解决这个问题?

+0

可能的重复[如何使用Maven创建一个具有依赖关系的可执行jar?](http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies -using-maven) –

+0

@AlessandroDaRugna:这个问题对我来说是一个挑战。实际上有两个项目。一个是“PROJECT”,另一个是“Project_Framework”。这两个文件夹都有pom.xml。依赖关系写在PROJECT文件夹的pom.xml中。我应该在哪里添加插件?这确实让我感到困惑。 –

回答

2

您必须使用maven-shade-plugin将所有依赖项添加到您的jar。

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>1.7</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <finalName>${project.build.finalName}</finalName> 
       <transformers> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
         <resource>META-INF/spring.handlers</resource> 
        </transformer> 
        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
         <resource>META-INF/spring.schemas</resource> 
        </transformer> 
       </transformers> 
      </configuration> 
     </plugin> 

然后将目录更改PROJECT_FRAMEWORK。然后类型

mvn install 

然后,目录又变成PROJECT。如果您已添加它,则可以简单地运行

mvn package

+0

请勿使用[maven-shade-plugin的acient版本。当前版本是2.3](https://maven.apache.org/plugins/maven-shade-plugin/) – khmarbaise

+0

@khmarbaise:我所有的依赖都是用'pom.xml'编写的。所以我相信没有必要有一个插件。我期待一个应该这样做的命令。 –

+1

@NevinRaj你需要这个插件。 maven不会将jar文件包含到artefact中。这将做插件 – Jens