maven文件结构如何工作?

时间:2010-01-27 09:18:30

标签: maven-2 directory-structure filestructure

我们正在计划重组一个包含许多模块/件的复杂项目,无论您想要什么。为了转向标准目录结构,我们希望采用maven文件结构。

所以最大的问题是:任何人都可以提供maven文件结构的描述,我们不必深入挖掘所有maven说话吗?

2 个答案:

答案 0 :(得分: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中不存在这个概念)。

我们最终采用了严格的等级制度,使我们摆脱了许多maven问题:

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

答案 1 :(得分:0)

我在使用Maven 2.2.1和现在使用Maven 3.0-alpha-6的许多项目中使用与Jens相同的方法:POM模块定义项目树的模块结构,JAR / WAR模块是树的叶子。所有模块都具有相同的版本。

优点:

  • 你可以 放置属性或依赖项 模块中的特定级别 层次结构,它们将被继承 到所有子模块。
  • 你可以建立 相关模块只需转到 树和中的适当级别 运行“mvn install” - Maven会 找出正确的构建顺序 根据。
  • 各种Maven插件等 因为发布插件依赖于此 树的结构。
  • 最新的Maven Eclipse插件可以处理这个问题 结构非常好,意志坚定 将树表示为平面列表。 有一个实验性的功能 插件,以确保 出现所谓的“阴影”文物 只有一次有助于搜索 对于Eclipse中的资源。

缺点:

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