当前位置:  开发笔记 > 编程语言 > 正文

使用Maven2过滤添加当前日期

如何解决《使用Maven2过滤添加当前日期》经验,为你挑选了8个好方法。

我有一个Maven2项目,我需要在属性文件中添加当前版本和当前日期.

对于当前版本,我已经使用过${project.version},它可以正常工作.

我的问题是如何在我的属性文件中设置当前日期(即Maven2完成构建的日期):

client.version=Version ${project.version}
client.build=???

(另外,如果我可以指定日期的格式,那将非常棒)



1> 小智..:

功能不适用于maven 2.2.1资源过滤.

请参阅:https://issues.apache.org/jira/browse/MRESOURCES-99

但您可以在父pom中创建自定义属性:


    yyMMdd_HHmm
    ${maven.build.timestamp}

其中buildNumber是可以过滤到资源的新属性.


可爱的开源论证.但我并没有抱怨.这是事实;)!
请注意,jenkins中的错误阻止您使用此功能(仅适用于jenkins案例)https://issues.jenkins-ci.org/browse/JENKINS-9693
+1比http://maven.apache.org/plugin-developers/cookbook/add-build-time-to-manifest.html BTW好得多,你的代码也可以在中的同一个pom.xml里面properties> ... .
@Karussell,您可以自由地为该项目提供修复,这比投诉那些将时间用于项目的人太慢而无法解决对您来说重要的问题更有效率.

2> Thomas Marti..:

您可以使用Maven Buildnumber插件:


  
    
      org.codehaus.mojo
      buildnumber-maven-plugin
      
        
          initialize
          
            create
          
        
      
      
        false
        false
        {0,date,yyyy-MM-dd HH:mm:ss}
      
    
  

然后可以在属性$ {buildNumber}中找到该日期.



3> aberrant80..:

从Maven 2.1 M1开始,您现在可以${maven.build.timestamp}为您提供定义${maven.build.timestamp.format}


    ...
    yyyyMMdd-HHmm
    ...


注意:这在过滤资源文件时不起作用(截至目前)

4> Garret Wilso..:

Thomas Marti的答案是向正确的方向迈出的一步,但是有一种更简单的方法,不需要在POM中进行虚拟声明.使用buildnumber-maven-plugin,但使用create-timestamp目标.文件不清楚; 这是在YYYY-MM-DD格式中获取日期并将其放入build.date属性中的样子:


    org.codehaus.mojo
    buildnumber-maven-plugin
    1.2
    
        
            validate
            
                create-timestamp
            
        
    
    
        yyyy-MM-dd
        build.date
    

开箱即用,这在使用m2e的Eclipse中不起作用,因此您必须在POM 部分中添加以下内容:


    
        
            org.eclipse.m2e
            lifecycle-mapping
            1.0.0
            
                
                    
                        
                            
                                org.codehaus.mojo
                                buildnumber-maven-plugin
                                [1.2,)
                                
                                    create-timestamp
                                
                            
                            
                                
                                    true
                                    true
                                
                            
                        
                    
                
            
        
    

这告诉m2e你希望它在Eclipse中构建时继续运行插件.

现在,当您在Eclipse内部或外部构建时,正确生成时间戳并使用资源过滤!

令人遗憾的是,功能如此简单必须如此艰难......



5> Romain Linso..:

另一个解决方案是在pom.xml中使用Groovy(可能不像Thomas Marti提出的解决方案那样合适):

   
      
         
            src/main/resources
            true
         
      
      
         
            org.codehaus.groovy.maven
            gmaven-plugin
            
               
                  validate
                  
                     execute
                  
                  
                     
                     import java.util.Date 
                     import java.text.MessageFormat 
                     def vartimestamp = MessageFormat.format("{0,date,yyyyMMdd-HH:mm:ss}", new Date()) 
                     project.properties['buildtimestamp'] = vartimestamp
                     
                  
               
            
         
      
   

然后使用该buildtimestamp属性:

client.version=${pom.version}
client.build=${buildtimestamp}



6> 小智..:

这对我有用.我想要的只是时间戳.

在pom ...


    yyyyMMdd-HHmm
    ${maven.build.timestamp}

...

   mystuff
   mystuff.web
   true

并在JSP文件中......

Built: ${dev.build.timestamp}

示例结果是......

Built: 20130419-0835



7> AmanicA..:

粘贴${build.time}在属性文件和以下内容中pom.xml:


   
      
        org.codehaus.mojo
        buildnumber-maven-plugin
        1.3
        
          yyyy-MM-dd HH:mm:ss
          build.time
        
        
          
            initialize
            
              create-timestamp
            
          
        
      
   

另请参阅buildnumber-maven-plugin文档.


(其他答案让我特别关注Garret Wilson,但他的日食配置对我来说不是必需的,这让我忽略了他的答案,所以我发布了对我有用的东西.)

如果你想获得一个日期和一个时间的两个属性作为奖励,这就是你如何做到这一点:


  org.codehaus.mojo
  buildnumber-maven-plugin
  1.3
  
    
      build.date
      initialize
      
        create-timestamp
      
      
        yyyy-MM-dd
        build.date
      
    
    
      build.time
      initialize
      
        create-timestamp
      
      
        yyyy-MM-dd HH:mm:ss
        build.time
      
    
  



8> 小智..:

它在maven 2.1.0对我有用

$ {} maven.build.timestamp

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有