2013-10-15 60 views
0

Maven的新功能...在Maven系统中部署的第三方罐子在哪里

我已经成功地为我的应用程序创建了一个jar。我想从这个jar“java -jar foo.jar MyClass”运行应用程序,但我不知道从哪里获得(并打包)所有依赖关系。 maven是否有这样的目标?如果没有,我是否使用类似proguard的东西?然后,我如何将它融入到Maven的目标中?

在此先感谢

+0

谢谢大家。确实,答案在这里http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven – user2884343

回答

0

的Maven把所有你的依赖在你~/.m2文件夹中。 (如果你使用maven 2)

只要你的pom.xml拥有它所需要的一切,做一个mvn clean install将处理所有的细节。

请记住,你可以在你的项目中看到它的所有依存关系做了mvn dependency:tree:P

+0

我认为OP想打包依赖关系_with artifact_以便可以执行。在〜/ .m2中有依赖关系并没有多大帮助... –

0

Maven将递归下载所有的依赖关系,并将它们放到你的本地库。

从命令行运行java的棘手问题之一就是获取类路径。但是,你可以得到Maven来执行它为您提供:

How do I execute a program using Maven?

0

这并不完全回答你的queston,而是要创造一个“胖”罐子,用装入所有dependencys,尝试Maven的编译插件:

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>com.stackoverflow.example.MainClass</mainClass> 
        </manifest> 
       </archive> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
      </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> 
    </plugins> 
</build>