2013-02-19 120 views
4

我正在尝试为使用maven构建自动化解决方案。我的愿景是有一个Maven构建,它从我的项目创建JAR文件,然后将所有依赖项作为JAR复制到“目标”文件夹中的某个子目录。如何为具有外部依赖关系的Java项目配置Maven构建?

我不想使用Shade或Assembly(所以我不想提取其他JAR的内容并将它包含在一个“super-JAR”中,因为项目更复杂,并且当我包括一个文件中的所有JAR)。

我该怎么做这样的构建POM?

+0

所有的依赖复制到目标/ lib目录当你做一个Maven构建。 – 2013-02-19 13:00:28

+0

@AjayGeorge很大程度上取决于''.. OP声明他构建了一个JAR,因此他的'target/lib'中没有任何内容。 @Miroslav我很好奇你为什么不想使用程序集插件? – 2013-02-19 13:12:06

+0

@ AndersR.Bystrup你的意思是建立一个单一的superjar文件?这将是最好的,但我一直在努力处理被覆盖/跳过的文件(目前为止,该项目有68个外部JARs) - 即使Shade没有帮助...所以我最终得到了一个搞砸的JAR文件正确地开始...正如我在我接受的答案下面的评论中所说的,我正在努力应对Maven配置。 – 2013-02-19 13:16:01

回答

7

我在这里没有看到任何问题。只需创建与<packaging>jar</packaging> maven pom.xml默认情况下,它不应该打包到你的jar所有依赖库。

<plugin> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
    <execution> 
     <phase>install</phase> 
     <goals> 
     <goal>copy-dependencies</goal> 
     </goals> 
     <configuration> 
     <outputDirectory>${project.build.directory}/lib</outputDirectory> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

没有问题,我只是失败(很长一段时间),以抓住Maven配置和我没有时间正确研究它,因为其他工作。 :-(谢谢,这基本上就是答案,现在我只需要弄清楚如何在同一步骤中添加清单,但是我认为我可以处理这个问题,谢谢! – 2013-02-19 13:09:05

+2

对于初学者来说最有价值的提示我可以提供建议 - 尝试'mvn archetype:generate'。在那里你可以为不同类型的项目准备好maven的设置 – 2013-02-19 13:14:26

0

您可以使用maven组件,插件创建从您的目录中选择的其他文件的.zip文件。我使用这种方法为项目创建分发zip文件。 maven-assembly-plugin documentation中有几个示例。

+0

谢谢你的回答,但不是这样。Assembly插件是创建分发包的最后一步。但是我只需要首先将依赖关系收集到一个目录中 – 2013-02-19 13:12:38

2

与最新的评论相关,使用这个插件添加主类的清单:

 <plugin> 
      <!-- Build an executable JAR --> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <classpathPrefix>lib/</classpathPrefix> 
         <mainClass>com.test.YourMainClass</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
+2

谢谢,我已经明白了,并且,由于java -jar以某种方式覆盖(?)java -cp,我最终使用了java -cp“project-jarfile .jar; lib/*“mainClass无论如何。 – 2013-02-19 14:03:21

相关问题