繁体   English   中英

使用不同的相对路径将模块添加到Maven多模块项目中

[英]Add modules to a maven multi-module project with different relative paths

在我目前正在工作的项目中,我们在不同的SVN目录中有不同的Maven项目,如下所示:

(simplified)
...service/rest-api/trunk/project1
...service/common/trunk/project2
...service/common/trunk/parent-aggregator

最后一个(父聚合器)是一个maven pom项目,其中包含共享的依赖项和多模块配置。

因此,当我使用Eclipse svn(subclipse)客户端时,它允许我将所有这些项目导入到eclipse工作区中,并将所有项目都放在同一目录中,因此,我创建的配置可以使用相对路径:

父聚合器pom.xml:

<modules>
    <module>../project1</module>
    <module>../project2</module>
</modules>

问题出在我的一位同事使用tortoise svn客户端获取项目,然后将项目导入eclipse时,tortoise正在其本地文件系统中复制svn目录结构。

因此,每当他尝试对父聚合器执行mvn全新安装时,由于无法访问project1,安装将失败。 就像在他的机器中的项目不在同一目录中一样,这很有意义。

有没有一种引用模块的方法,这样两种结构都可以工作?

到目前为止,我尝试使用artifactId:

<module>artifactId</module>

它不起作用。

还尝试通过首先定义一个项目来添加项目名称:

<name>project1</name>

在project1内部pom.xml

然后在模块中引用它:

<module>project1</module>

但是它一直告诉我找不到子模块。

我们正在使用的临时解决方案在其本地计算机中具有不同的相对路径:

<modules>
    <module>../../../rest-api/trunk/project1</module>
    <module>../project2</module>
</modules>

我一点都不喜欢,因为我们应该有一个可以在SVN中保留的单一方法。

您应该做的第一件事就是更改您的结构以及在SVN中。.因为如果您具有多模块构建,则表示这些模块属于gehter,因此您应该在结构中进行表示。

+--- root (pom.xml)
       +--- mod-rest-api (pom.xml)
       +--- mod-war (pom.xml)
       +--- mod-p1 (pom.xml)

如果根据上述更改项目,则只有以下条目:

<modules>
  <module>mod-rest-api</module>
  <module>mod-war</module>
  <module>mod-p1</module>
</modules>

这将简化您的输入,并且您不需要父母的relativePath条目。 此外,您也可以在SVN中使用以下结构:

URL/project/trunk
     +--- root (pom.xml)
         +--- mod-rest-api (pom.xml)
         +--- mod-war (pom.xml)
         +--- mod-p1 (pom.xml)

所以你有URL/project/tagsURL/project/branches

从我的角度来看,在模块中输入..是一种构建气味,表明文件夹结构与项目体系结构之间存在问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM