Maven发布插件 - tagbase配置 - 项目中包含的标签文件夹

时间:2014-10-19 11:23:35

标签: maven svn tags

对于每个新版本,我都会包含标签,这最终会导致这种结构:

...VersionExperimentation/tags/VersionExperimentation-0.0.7/tags/VersionExperimentation-0.0.6/tags/VersionExperimentation-0.0.5/tags/VersionExperimentation-0.0.4/tags/VersionExperimentation-0.0.3/tags/VersionExperimentation-0.0.2-beta/tags/VersionExperimentation-0.0.2-alpha/src/main/java

我的POM看起来像这样:

    <scm>
    <developerConnection>scm:svn:https://[..root svn folder]/VersionExperimentation</developerConnection>
</scm>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
                <tagBase>[..root svn folder]/VersionExperimentation/tags</tagBase>
            </configuration>
        </plugin>
    </plugins>
</build>

显然,标签应该在根目录中,而不是在项目所在的VersionExperimentation文件夹中,该文件夹在developerConnection中定义。

这里的最佳做法是什么?我们是否应该在SVN根目录中的某个文件夹中有一个项目,并且在项目文件夹所在的同一路径中有标签?

喜欢:

./projectFolder
./tagsFolder

其中DeveloperConnection将指向projectFolder并将release tagbase标记配置到tagsFolder?

这似乎遵循svn book推荐的存储库布局,可以找到here

$ svn list file:///var/svn/single-project-repo
trunk/
branches/
tags/

如果是的话,我们该怎么做,如果我们有项目,不幸的是,项目会立即存储在根文件夹中?

我们应该创建文件夹,将数据移动到正确的位置并适当地配置pom,将标签存储在tags文件夹中并提交到trunk / projectFolder?

1 个答案:

答案 0 :(得分:0)

您应该遵循最佳做法,因为它们不会被称为best practice。我建议有这样的事情:

 repository-root
    +-- project1
    +-- project2
    +-- project3

在您的存储库的根级别,您可以将补充文件夹插入您的项目(组织内容等),如果您需要,但在每个项目中,我建议遵循颠覆的TTB结构,这意味着每个项目:

  +-- project1
       +--- trunk
       +--- tags
       +--- branchs

因此将不再需要Maven中的配置(约定优于配置)。

除了以上将单个项目存储在单个存储库中之外,不推荐在Subversion中导致与Git不一致的情况不一致。 所以在Subversion中,在一个Subversion存储库中存储数百或数千个项目都没有问题......

另一方面,如果你有充分的理由不使用默认值,你应该详细解释为什么你需要走不同的路径。

相关问题