5

Spring Roo可用于遵循标准 maven 布局的现有项目。到目前为止,这似乎意味着不使用 maven 的项目不走运。

我想知道这些现有项目的选择(如果有的话)是什么。

重新安排项目布局以符合 Maven 布局?对于在 CVS 中有多年历史的项目来说,这似乎是非常困难的路径,因为在 CVS中移动目录的方法极具侵入性。

是否有任何其他选项,例如修改 Maven 配置以使用非标准布局?我从我之前关于这个主题的阅读中回想起,Maven 的CoC方法不支持这种非标准布局。

编辑:

Rich 在下面的回答表明,覆盖 super-pom 中的默认值是微不足道的。这给我们留下了一个问题,即 Spring Roo 是否会很好地适应这些修改。这是值得怀疑的,因为 Spring Roo 本身并不使用 Maven。

编辑:

Rich 更新后的答案表明,默认情况下,ROO 将使用硬编码路径,并且不会在您的 pom.xml 中选择修改所以到目前为止的答案似乎是不可能开箱即用,但可以通过一些自定义编码(或要求 ROO 团队支持)

4

3 回答 3

2

您可以修改 Maven 以使用一组不同的约定。标准集继承自Maven 超级 POM,可以通过重新定义相关属性来覆盖。

例如,要将源目录从 src/main/java 更改为 src,将测试目录更改为 test-src,并将资源目录从 src/main/resources 更改为资源,您可以在 POM 中设置以下内容:

<build>
  <sourceDirectory>src</sourceDirectory>
  <testSourceDirectory>test-src</testSourceDirectory>
  <resources>
    <resource>
      <directory>resources</directory>
    </resource>
  </resources>
</build>

请注意,一些插件可能不使用标准属性来访问位置(例如硬编码目标/类而不是使用 ${project.build.outputDirectory},因此您可能会遇到奇怪的问题。


更新:看起来 Roo 目前有这些属性硬编码。您可以替换 MavenPathResolver 或添加额外的解析器以使用自定义属性。

如果这对您来说是一个真正的问题,您可以提出请求以修改 MavenPathResolver 以允许自定义位置。

于 2009-08-05T08:01:05.593 回答
2

我们(Roo 团队)没有理由不能让 MavenPathResolver 允许使用自定义路径,而我创建 PathResolver 抽象的有意原因之一是支持自定义公共路径位置,不仅针对 Maven 非默认位置,而且还支持其他构建系统,例如 Ant+Ivy。所有基本 Roo 附加组件都已编写为使用 PathResolver,因此支持这一点应该不是很大的努力。如果您仍然需要此支持,请向Roo Jira 实例添加增强请求。

于 2010-01-08T21:02:38.037 回答
1

从 Roo 1.2 开始,它还没有实现。

于 2012-01-18T08:12:51.160 回答