Maven是我的应用程序的一个很好的解决方案

时间:2014-02-11 14:35:03

标签: java eclipse maven

我正在开发一个java应用程序,它包含一个在运行时加载扩展(jars)的主应用程序。每个扩展都是一个java项目。 所有jar都有类路径和其他库中的主要应用程序。主应用程序的清单还在清单类路径中具有依赖关系,例如, sqldriver,poi,log4j等。

每次我改变lib时,我都必须设置项目的所有类路径。此外,如果我想建立所有的罐子,我必须导出每个项目一次。 所以我想Maven可能是一个很好的解决方案。所以我安装了m2eclipse并将项目转换为maven项目。

但是现在我为每个项目提供了一个自己的pom.xml,我还必须构建所有项目一次。 我是Maven的新手,并为我的问题寻找最佳实践。所以我会感谢你的帮助和建议

3 个答案:

答案 0 :(得分:4)

制作一个父pom项目的所有项目模块。这样你就可以同时构建它们。

答案 1 :(得分:0)

您可以为pom文件使用层次结构。这是一个较旧的问题(类似于你的问题),答案中有一个很好的例子: Maven: POM modules and submodules hierarchy

基本上这个结构:

<project>
  <parent>...
  </parent>    
  <artifactId>module</artifactId>
  <packaging>pom</packaging>

  <name>Module</name>

  <modules>
      <module>submodule</module>      
  </modules>
  (...)
</project>

在'root'pom.xml文件中,除了实际的子模块pom.xml文件。

答案 2 :(得分:0)

除非你真的需要OSGi,否则Maven很棒。如果你正在做OSGi maven不太好。

然而,M2eclipse不太有帮助,根据我的经验,只会导致令人头疼的问题。

如何构建项目取决于一些事情。我同意其他答案中描述的子模块方法是最佳实践,如果所有子模块候选项都相关(例如,每个子模块候选项代表n层应用程序中的层),则在同一个SCM存储库中,以及接口经常变化,并且版本是相互依赖的,那么你应该这样做。

但是,如果您的子模块是独立的并且没有很多传递依赖项,特别是如果它们位于单独的SCM存储库中,则它们是独立版本的,并且您有一些用于构建服务器的备用硬件(比如说) Hudson)和Maven2神器(如Sonatype Nexus),你可以将它们作为单独的项目保留,让maven处理其余部分。这样您就可以避免重新构建所有内容,因为您在其中一个子模块中进行了少量更改。你可以建立那个。