我需要将项目部署到工件中。为此,我将maven-assembly-plugin与artifactory-maven-plugin一起使用
此CMD仅可用于构建mvn(可能会进行小更新):
mvn -e -B -U clean deploy -DskipIntegrationTests=false -DskipCoverageReport=false -Dservice_name=sample_service
我在mvn命令中不能做的是更新服务名称。它将始终是“ sample_service”或代表服务名称的其他常量
因为我不知道服务的名称(可能会有更多的服务),所以我的pom.xml的基本部分看起来像这样(artifactId是通过属性service_name动态创建的):
<groupId>my.group.id</groupId>
<artifactId>${service_name}</artifactId>
<version>2.0.0-SNAPSHOT</version>
问题在于参数-Dservice_name将始终包含“下划线”。由于惯例,人工制品必须由“破折号”而不是“下划线”组成。
有什么办法(例如某些插件)可以做这样的事情吗?
<groupId>my.group.id</groupId>
<artifactId>${service_name}.replaceAll("_","-")</artifactId>
<version>2.0.0-SNAPSHOT</version>
简而言之,属性service_name在构建工件之前需要用短划线替换下划线。
感谢答案。
答案 0 :(得分:0)
无法完成。
<artifactId>
中使用的属性只能通过命令行设置。您没有机会在Maven中操纵它们。我看到的唯一机会是更改命令行,以便在将参数发送到Maven之前执行 替换。
答案 1 :(得分:0)
我找到了解决问题的方法。但是我不确定解决方法是否正确。我使用了插件 gmaven-plugin
<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<phase>pre-clean</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
project.getModel().setArtifactId(project.properties["service_name"].replaceAll('_', '-'))
project.getArtifact().setArtifactId(project.properties["service_name"].replaceAll('_', '-'))
</source>
</configuration>
</execution>
</executions>
</plugin>
之后,我使用maven-assembly插件将数据上传到工件中。这个插件从实例“ project.getArtifacts()”中读取工件ID,因此我直接对其进行更新。 所以我直接在Maven实例中更新了工件ID。 正如我说的那样,这不是100%正确,但对我来说有帮助
答案 2 :(得分:-2)
您可以使用buildhelper插件来执行此操作,它的目标regex-property可以根据初始值(您的service_name属性)设置一个属性,并使用正则表达式替换为替换值。
usage page中的示例(由于使用的值没有意义而进行了修改):
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>regex-property</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>human.version</name>
<value>${project.version}</value>
<regex>-SNAPSHOT</regex>
<replacement> pre-release development version</replacement>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>