Maven原型+速度:如何显示日期(Maven archetype + Velocity: how

2019-09-19 09:11发布

我有一个Maven原型项目。 当我使用这个原型,我想一些文件报告的实际日期。 我试着用$日期,但速度不承认它。 我发现了一种叫做DateTools,但我不知道我该如何使用它。 这是我第一次使用速度。

Answer 1:

不幸的是,Maven Archetype插件不捆绑有速度的工具。 我已经通过修改Maven原型插件添加它。 按照这些步骤,假设你正在使用Maven 2.2.1:

svn co -q http://svn.apache.org/repos/asf/maven/archetype/tags/maven-archetype-2.2
cd maven-archetype-2.2
curl -k -O https://raw.github.com/gist/3404715/59c7fa1c20c60e2a165de4109c2acffb8026febd/velocity-tools.patch
patch -p0 -i velocity-tools.patch
mvn install

修改后的Maven Archetype插件现在将本地安装。

$date在模板中使用现在应该呈现,例如,

The date is $date

...至:

The date is Aug 20, 2012 4:40:22 PM


Answer 2:

(道歉复活一个老问题,但我通过一种方式合作,以实现这一目标,而无需拉和补丁插件)。

对于那些希望能够引用日期字段在他们的Maven原型模板的人,我能得到它具有以下一组定义的工作在我的pom.xml模板顶部

#set( $str = "" )
#set( $dt = $str.getClass().forName("java.util.Date").newInstance() )
#set( $year = $dt.getYear() + 1900 )

如果你已经拥有你在点模板您插入这些行基于对象的变量,你可能会划伤$ STR声明和使用一个变量,而不是因为它并不真的不管你在哪里得到的参考的Class.forName ()从。

注:我试图得到这个工作与Calendar.getInstance()均告失败。



Answer 3:

我设法裁减从@maaxiim到一行的解决方案:

#set( $year = $package.getClass().forName("java.util.Date").newInstance().getYear() + 1900 )

在$包变量将始终可用从Maven Archetype插件。 另外内建的工作为好,但他们大多是很长,和$ artifactId.getClass()只是看起来...错了。



Answer 4:

在Java 8,有格式:

#set( $ldt = $package.getClass().forName("java.time.LocalDateTime").getMethod("now").invoke(null) )
#set( $dtf = $package.getClass().forName("java.time.format.DateTimeFormatter").getMethod("ofPattern", $package.getClass()).invoke(null, "yyyy/MM/dd HH:mm:ss") )
#set( $date = $ldt.format($dtf) )


文章来源: Maven archetype + Velocity: how to show the date