通过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] ----------------------------------------------- -------------------------
 ...