3 回答
TA贡献1799条经验 获得超8个赞
我找到了解决问题的方法。但我不确定如何解决它是否正确。我使用了插件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% 正确,但在我的情况下它有帮助
TA贡献1772条经验 获得超5个赞
这是不可能的。
内部使用的属性<artifactId>
只能通过命令行设置。您没有机会在 Maven 中操纵它们。我看到的唯一机会是更改命令行,以便在将参数发送到 Maven之前进行替换。
TA贡献1811条经验 获得超4个赞
您可以使用 buildhelper 插件执行此操作,它有一个目标regex-property,它可以根据初始值(您的 service_name 属性)和一个正则表达式来设置属性以替换为替换值。
来自使用页面的示例(因为使用的值没有意义而改编):
<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>
添加回答
举报