我投了筑巢。我使用的IDEA 9显示了项目窗格中的嵌套,因此演示文稿反映了您的逻辑项目结构。 (这不是8.1的情况 - 它已经变平了。)
我更喜欢保持东西嵌套,特别是如果名称非常相似 - 使用命令提示符时导航更容易。我有一个像myapp-layer-component这样的名称的项目,所以它们都以相同的前缀开头,而且很多都具有相同的层,因此在命令行中使用自动完成是无用的。将这些分离为嵌套结构会更容易,因为名称(应用程序名,层或组件)的每个部分在目录结构中的每个级别只重复一次。
如果从命令行构建,构建项目的子集比如构建项目更容易,如果我正在研究数据库模型,那么我经常需要构建该领域的所有项目。当文件变平时,这是非常棘手的 - 我知道的唯一方法是使用maven的-pl
参数并指定要构建的项目。使用嵌套目录,我只需cd
到db
目录并运行mvn
。
例如,而不是
myapp-web-gui1
myapp-web-gui2
myapp-web-base
myapp-svc-clustered
myapp-svc-clustered-integrationtest
myapp-svc-simple
myapp-db-model
myapp-db-hibernate
我们有结构
\myapp
\web
\gui1
pom.xml
\gui2
pom.xml (other poms omitted to keep it short)
\base
\svc
\clustered
\clustered-it
\simple
\db
\model
\hibernate
你也可以添加嵌套集成测试,但是这似乎是驱动点太远。
筑巢,您还可以继承的所有优点(和它的一些痛苦......)
我已经受够了这个唯一的问题是,目录名称不匹配的神器ID 。 (我还在使用完整的artifactIds。)所以每个项目都必须显式定义SCM路径,因为这些路径不能再从父pom中推断出来。当然,每个目录都可以与artifactId相同,然后可以从父项中推断出SCM的详细信息,但是我发现长目录名称有点笨拙。
其他答案真的很好,谢谢。 – 2010-05-22 14:26:59