通过Maven生成UUID
我需要在maven pom.xml文件中设置一个属性,该文件应该是UUID。 任何人都可以告诉我
将属性设置为UUID的最佳方法是什么?
我正在使用一个启动gigaspaces和gigaspaces的配置文件需要组名,我
想要独一无二(uuid)。 所以,在我的个人资料中,我想设置一个groupName属性值
应该改变每个构建。 我自己写了一个UUIDGenerator插件,因为我没有找到任何插件。
所以,我在寻找如何实现这一目标? 写一个插件是更好的选择还是有一个
更容易选择。
谢谢,
谢卡尔
首先,如果你的设置需要一个叫做“组名”的东西,你可能应该提供一个有意义的值。 如果它必须是唯一的,您可以附加一些生成的字符,例如“MyApplication-10937410”。 另外,在我看来,使用UUID就像使用大锤来破解坚果。 但这与您的实际问题无关,所以这是我建议的解决方案:
如果您还没有这样做,请创建一个maven插件(这是一个原型)。 添加此依赖项:
org.apache.maven maven-project 2.2.1
这就是你的MOJO应该是这样的:
/** * Goal which generates a group name. * * @goal generate * @phase initialize */ public class GroupNameGeneratorMojo extends AbstractMojo { /** * @parameter expression="${project}" * @required * @readonly */ private MavenProject project; @Override public void execute() throws MojoExecutionException { String groupName = ... ; project.getProperties().setProperty("uniqueGroupName", groupName); } }
在你的实际项目pom中,使用${uniqueGroupName}
无论你需要它,并像这样配置你的插件
the.plugin.groupid groupNameGenerator generate
Arian的解决方案 (实现maven插件)是IMO实现您的要求的一种干净方式(并为他的答案+1)。
但是如果你不打算在其他地方重用你的插件,那么快速替代就是使用GMavenPlus插件破解pom。 下面是一个示例,说明如何使用库中的Java类生成一些uuid并将其设置为属性:
4.0.0 com.stackoverflow Q3984794 1.0-SNAPSHOT UTF-8 org.safehaus.jug jug 2.0.0 lgpl ... org.codehaus.gmaven gmaven-plugin 1.3 set-custom-property initialize execute org.safehaus.jug jug lgpl import org.safehaus.uuid.UUIDGenerator def uuid = UUIDGenerator.getInstance().generateRandomBasedUUID() project.properties.setProperty('groupName', uuid.toString()) show-custom-property generate-resources execute def props = project.properties props.each {key, value -> println key + "=" + value}
只需将插件绑定到gigaspaces之前的阶段即可。
第二次执行仅用于演示目的(显示属性):
$ mvn generate-resources [INFO]扫描项目...... [信息] [INFO] ----------------------------------------------- ------------------------- [INFO]建筑Q3984794 1.0-SNAPSHOT [INFO] ----------------------------------------------- ------------------------- [信息] [INFO] --- gmaven-plugin:1.3:执行(set-custom-property)@ Q3984794 --- [信息] [INFO] --- gmaven-plugin:1.3:执行(show-custom-property)@ Q3984794 --- downloadSources =真 downloadJavadocs =真 project.reporting.outputEncoding = UTF-8 project.build.sourceEncoding = UTF-8 组名= 814ff1a5-a102-426e-875C-3c40bd85b737 [INFO] ----------------------------------------------- ------------------------- [信息]建立成功 [INFO] ----------------------------------------------- ------------------------- ...