2009-02-06 46 views
5

的Maven 2使用的项目标准目录布局,这里记载:Maven项目有哪些额外的目录约定?

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

我想知道的是:有什么可以推荐约定除纯香草Java库,Java EE和Web应用程序等项目项目?具体而言,在何处放置ant文件,启动脚本,配置文件,示例应用程序等。

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

是否有页面在这些约定编译?如果不是,其他读者可以从自己的项目中提供示例吗?

回答

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。
  • 如果您使用包含config和lib目录以及标准文件类型的共享程序集描述符jar与所有项目共享,则可获得奖励积分。要包含的一组很好的默认文件类型是带有可执行权限的.sh,.bat和.exe。 .jar,.zip,.txt,.pdf,.xml,.properties,.conf,.ico,.png,.jpg和标准权限。
  • 使用maven-jar插件将配置目录和lib /前缀添加到类路径中以生成可运行jar。
  • 添加一个安装程序配置文件,该配置文件使用maven-assembly插件和您的装配描述符构建应用程序的装配。如果需要,此组件可以由单独的安装程序项目使用。
  • 避免在src /等级放置其他任何东西。如果你真的需要的话,把文档放在src/site /目录(例如.src/site/sphinx)或src/doc中。
  • 将上述所有配置放在父/公司pom中,以便与您的所有项目共享。只需引用项目中的maven-dependency,maven-resources,maven-jar和maven-assembly插件即可构建几乎没有配置的整个应用程序(不要忘记为maven-jar插件设置主类) 。
2

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

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

http://maven.apache.org/pom.html#Resources

+4

请记住,这些资源目录通常会被maven震惊。这可能不是用户可配置属性文件或启动脚本的期望行为。 – Kevin 2009-02-08 00:40:30