Maven项目有哪些额外的目录约定?

时间:2009-02-06 21:12:37

标签: java maven-2 conventions

Maven 2使用项目的标准目录布局,在此处记录:

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

我想知道的是:除了普通的Java库,Java EE和WebApp项目之外,是否有推荐的其他项目约定?具体来说,放置ant文件的位置,启动脚本,配置文件,示例应用程序等等。

另外,将文件放在src /目录树之外的惯例是什么?例如,将文档放在doc /(作为src的兄弟)下是否常见?

是否有编译这些约定的页面?如果没有,其他读者可以提供他们自己项目的例子吗?

2 个答案:

答案 0 :(得分:2)

我放置额外配置文件的主文件夹位于src / main / java / resources下。通常我在那里创建子目录。测试可以有自己的配置文件src / test / resources。

您可以在pom.xml的build部分中使用指令来指定其他资源目录以及将文件复制到目标目录中特定位置的位置。通常会出现您尝试使用的语言或框架的约定。在这种情况下,混乱可以隐藏在父pom.xml

请参阅http://maven.apache.org/pom.html#Resources

答案 1 :(得分:1)

我不认为桌面应用程序有官方布局,但这是我们用于我们的布局。

  • src / main / config - 配置文件,复制并过滤到$ {project.build.directory} / config。
  • src / main / scripts - sh,bat,README和其他复制并过滤到$ {project.build.directory}的纯文本文件。
  • src / main / bin - 过滤并复制到$ {project.build.directory}的二进制文件。
  • src / main / build - 构建过程使用但未包含在应用程序中的任何其他脚本,ant文件或资源。
  • src / main / assembly - 用于创建应用程序集的程序集描述符。
  • 使用maven-dependency插件将依赖项复制到$ {project.build.directory} / lib。
  • 如果您使用共享程序集描述符jar,其中包含config和lib目录以及标准文件类型,则可以与所有项目共享。要包含的一组好的默认文件类型是具有可执行权限的.sh,.bat和.exe;具有标准权限的.jar,.zip,.txt,.pdf,.xml,.properties,.conf,.ico,.png,.jpg。
  • 使用maven-jar插件将config目录和lib /前缀添加到类路径中,以创建一个可运行的jar。
  • 添加一个安装程序配置文件,使用maven-assembly插件和程序集描述符构建应用程序的程序集。如果需要,可以由单独的安装程序项目使用此程序集。
  • 避免在src /级别放置任何其他内容。而是将文档放在src / site /目录(例如src / site / sphinx)或src / doc中,如果你真的需要的话。
  • 将上述所有配置放在父/公司pom中,与您的所有项目共享。只需在项目中引用maven-dependency,maven-resources,maven-jar和maven-assembly插件来构建几乎没有配置的整个应用程序(不要忘记为maven-jar插件设置main-class)