当前位置: 首页 > 知识库问答 >
问题:

maven 2.2.1版本准备自定义标记格式

羊舌诚
2023-03-14

我工作场所的配置管理团队要求人工制品的4位版本号——比如,1.2.3.4——用于发布的人工制品,1.2.3.5-SNAPSHOT用于开发pom

除此之外,我们的版本管理系统(clearcase)具有预标签触发器,它强制执行标签/标签的特定命名约定。

因此,如果pom版本是1.2.3.4-SNAPSHOT,而artifactId是shopcart,那么根据标签命名要求,标签名称应该是:

XXX\u 1.2.3\u SHOPCART\u DROP4\u SRC

其中XXX是项目代码-常量字符串值。

如您所见,为了实现这种格式,我需要对标签名称格式进行以下自定义

  • artifactId-转换为大写

我想我会使用gmaven插件来完成这项工作,并填充一个自定义属性,用于maven发布插件(v2.3.2)的tag或tagNameFormat配置属性-但这根本不起作用。

maven release插件只支持3个属性(artifactId、version、groupId),不支持任何其他属性。

gmaven插件按预期工作,并以我需要的标记名格式设置最终用户属性——我使用ant run maven插件验证了它,以响应该属性。

问题是maven发布插件-它不理解任何用户属性。。。

谁能帮我实现这个目标?

编辑:

交互式运行是不可能的-需要将其配置为在jenkins上运行大约15个项目...

非常感谢,塔帕斯维

共有1个答案

齐阳
2023-03-14

您应该仔细阅读maven release插件的文档,因为有一个参数可以用于此类目的。tagNameFormat,可用于更改将创建的标记的格式(哦,对不起,您已经阅读了)。该版本可以通过buildhelper maven插件提取到属性中。此外,buildhelper maven插件可用于使工件id大写:

通过将正则表达式替换应用于值来设置属性

正则表达式属性目标可用于在应用正则表达式替换后将属性设置为值。例如,执行以下插件配置以设置clearcase.artifact属性。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <id>regex-property</id>
            <goals>
              <goal>regex-property</goal>
            </goals>
            <configuration>
              <name>clearcase.artifactid</name>
              <value>$\{project.artifactId}</value>
              <regex>(.*)</regex>
              <replacement>???</replacement>
              <failIfNoMatch>false</failIfNoMatch>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

但是您需要小心设置属性,导致发布:执行fork一个Maven进程。您可能需要使用-Darguments选项来设置适当的参数。

 类似资料:
  • 定义和使用自定义标记可以吗?(这不会与将来的html标记冲突)-通过更改outerHTML替换/呈现这些标记?? 我在下面创建了一个演示,看起来效果不错 问题的最新情况: 让我进一步解释一下。请假设浏览器上启用了JavaScript-也就是说,应用程序不应该在没有javascript的情况下运行。 我见过使用自定义属性在指定标记中定义自定义行为的库。例如,角度。js大量使用自定义属性。(它还有关于

  • 我正在使用React视图上的Highcharts。出于可访问性和搜索引擎优化的原因,我想定制标记,但我在文档中找不出如何实现。Highcharts会自动插入一个标记,如下所示: <代码> 有没有办法改变这一点,或者这是硬编码的?

  • 我正面临一个问题与连续体的发布:准备阶段失败在scm-check-修改步骤与错误: [ERROR] org.apache.maven.shared.release.ReleaseFailureException: 無法準備發行版本,因為你有本地修改: [pom.xml:modified] 我所做的: 我将所有更改(*. java和pom.xml)提交到SVN 我在连续体中构建了这个项目 我开始了发

  • 我是pylucene的新手,我试图构建一个自定义分析器,它只在下划线的基础上标记文本,即它应该保留空白空间。示例:“hi_this is_awesome”应该标记为[“hi”,“this is”,“awesome”]标记。 从各种代码示例中,我了解到需要重写CustomTokenizer的incrementToken方法,并编写CustomAnalyzer,TokenStream需要使用Custo

  • 问题内容: 我正在尝试创建一种类似于英语的小型语言来指定任务。基本思想是将陈述分为动词和名词短语,这些动词应适用于它们。我正在使用nltk,但未获得我希望的结果,例如: 在每种情况下,它都未能意识到第一个单词(选择,移动和复制)被用作动词。我知道我可以创建自定义标签和语法来解决此问题,但是与此同时,当很多此类东西不在我的支持范围内时,我犹豫要重新发明轮子。我特别希望可以同时处理非英语语言的解决方案