2012-07-12 40 views
4

我有一個maven原型項目。當我使用這個原型時,我想讓一些文件報告實際的日期。我嘗試使用$日期,但Velocity無法識別它。我發現了一個名爲DateTools的東西,但我不知道如何使用它。這是我第一次使用Velocity。Maven原型+速度:如何顯示日期

回答

3

不幸的是,Maven Archetype插件沒有捆綁Velocity Tools。我已經通過修改Maven Archetypes插件添加了它。假設您使用的是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 
+1

非常感謝,它的工作原理就像一個魅力。這個補丁是否會在Maven-Archetype-plugin的未來版本中應用? – Alf 2012-08-20 18:31:23

+0

不知道,我今天早上剛剛寫到:-)我認爲焦點可能在Maven 3上。 – opyate 2012-08-20 18:55:03

+0

仍在使用maven-archetype-plugin 3.0.0。謝謝! – farkasseb 2017-02-26 18:57:19

3

(道歉復活一個老問題,但我通過一種方式合作,以實現這一目標,而無需拉和補丁插件)。

對於希望能夠引用日期字段在他們的Maven原型模板的人,我能得到它具有以下一組定義的工作在我的pom.xml模板頂部

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

如果您在插入這些行時已經有模板可用的基於對象的變量,那麼您可以劃分$ str聲明並使用其中一個變量,因爲從哪裏獲取對Class.forName的引用並不重要()從。

注意:我試圖得到這與Calendar.getInstance()的工作不成功。

1

我設法從@maaxiim解決減磅,一條線路:

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

的$包變量將始終可用從Maven Archetype插件。其他內置函數也可以工作,但其中大多數都很長,而$ artifactId.getClass()只是看起來......錯了。

1

在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)) 
+1

有點諷刺你使用包。雖然它是一個字符串,並且package變量總是被設置的,所以這是完全有效的,但是事實上,你在一個名爲package的變量上使用getClass然後從另一個包中獲得一個不同的類是很有趣的。這似乎是最新的解決方案,如果你不想依靠更改默認插件(maven原型) – 2017-06-03 19:46:43

+0

你讓我發現這個無用的.forName(「java.lang.String」),謝謝! – 2017-06-06 07:53:28

+0

不客氣。使用這段代碼時我遇到了一些問題。更多信息在這裏:https://stackoverflow.com/q/44350467/2877358小心看看有什麼問題? – 2017-06-06 07:58:26