2010-01-27 50 views
1

我们正在计划重组一个复杂的项目,其中包含许多模块/部分,您可以称之为什么。为了转向标准的目录结构,我们希望采用maven文件结构。maven文件结构如何工作?

所以最大的问题是:任何人都可以提供对maven文件结构的描述,我们不需要通过所有的maven说话?

回答

5

请参阅 http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

src/main/java  Application/Library sources 
src/main/resources Application/Library resources 
src/main/filters Resource filter files 
src/main/assembly Assembly descriptors 
src/main/config  Configuration files 
src/main/webapp  Web application sources 
src/test/java  Test sources 
src/test/resources Test resources 
src/test/filters  Test resource filter files 
src/site   Site 
LICENSE.txt   Project's license 
README.txt  Project's readme 

顺便说一句,我们确实对现有项目,移民。 使一切按预期工作是一项非常漫长而艰巨的任务,但我们终于完成并对此感到满意。


修订

当你有很多的项目,你有相同的结构,每个项目

现在真正的问题开始时,你想分组他们。我们很难阅读Maven文档和最佳实践,并决定什么是适合我们的结构。

基本思想是将相关项目分组到一个公共目录中(我们称之为模块),允许将模块作为一个整体进行处理而不需要列出它们。但是如果你在一个IDE中打开模块(在我们的例子中是Eclipse),这些项目本身属于它,但不能作为子项目打开(这个概念在Eclipse中不存在)。

我们结束了一个严格的等级制度,这使我们脱离许多行家的问题:

  • 实际编码项目(Java项目)总是在我们的目录树的叶子。他们是我们在IDE中打开的唯一一个。它们是JAR类型或WAR。
  • 他们的父母/模块总是POM类型。他们没有Java代码。
+0

当我有更多的一个Java模块(例如util,framework,standardmodule,customer1,customer2 ...?)我会复制上面每个模块的结构吗? – 2010-01-27 09:47:45

+0

@Jens是,这是针对每个java项目的。 – KLE 2010-01-27 09:50:18

0

我一直在使用与Maven 2.2.1和现在使用Maven 3.0-alpha-6:POM模块定义模块结构的项目树JAR/WAR模块是树的叶子。所有模块具有相同的版本。

优点:

  • 您可以在模块 层次上 具体水平 地方特性或依赖性,他们将被继承 所有子模块。
  • 您可以直接转至 相应级别的树和 运行“MVN安装”打造 相关的模块 - Maven会 制定出根据正确的构建顺序 。
  • 各种Maven插件如 作为发布插件依赖于此 树结构。
  • 最新的Maven Eclipse插件可以很好地处理这个 结构,并且将 代表该树作为一个扁平列表。 这个插件有一个实验性功能,它确保 所谓的“阴影”工件仅出现一次,这有助于在Eclipse中搜索 资源。

缺点:

  • 扩展需要一些时间。例如,如果您决定JAR模块需要子模块,则需要将现有的JAR模块转换为POM模块,然后将其内容分发到新创建的JAR子模块,因为POM模块本身不能包含任何代码。
  • 所有的POM模块将出现在Eclipse中,并且可能会减慢构建的速度。 Hoever,你可以关闭它们,而Eclipse将从存储库中获取它们。