2011-06-08 54 views
2

我在這裏有三個問題。首先,maven的pom.xml與其他xml文件有什麼不同?第二,如果我想通過腳本重命名與pom.xml相同的目錄中的文件,我可以在pom.xml中執行它嗎?如果可能的話,我該怎麼做?如何使用pom.xml備份文件?

最後,我該如何在pom.xml中獲取當前時間?

事實上,我想要實現的是我想在將mvn打包之前通過在當前包(.war)中添加時間戳來備份它。我希望整個過程由pom.xml自動完成,而不是手動處理它。

您好,

我找到一種方式來獲得時間戳,它是否行得通呢?

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactID>buildnumber-maven-plugin</artifactId> 
    <execution> 
    <phrase>package</phrase> 
    <configuration> 
    <format>{0, date, yyyy-MM-dd HH:mm:ss}</format> 
    <items>timestamp</items> 
    </configuration> 
    <execution> 
</plugin> 

它會工作嗎?如果它工作,我如何獲得時間戳變量? $ items或$ timestamp?

感謝

回答

2
  1. Maven的pom.xml是另一個XML文件,並沒有從別人差。它遵循相同的XML標準。

現在對於問題2和3,首先,當你將運行mvn clean,它將刷新了所有的文件,包括war從目標文件夾。

您可以運行ANT任務來重命名和備份當前的戰爭,但它不能在清理之前執行。 我建議你採取下列措施:爲package目標的一部分

  • 運行maven-antrun-plugin
  • ANT目標中,重命名並備份當前打包的戰爭。

或者
我的建議是:在WAR的pom.xml,指定與當前時間戳和所需版本的<version>元素。這樣,每場戰爭將被複制到maven本地資源庫中的不同目錄中。

PS:根據我的知識,您無法在maven中生成時間戳。通過一些外部變量

+1

嗨,朋友,運行maven-antrun-plugin看起來不錯。但我只能一些文件,我沒有重命名的標籤。你能用一個說明它的用法的例子給我提供嗎?提前致謝!! – Newbie 2011-06-08 08:07:16

+0

請注意,我找到了一種通過插件查找時間戳的方法。我如何將其嵌入到將要備份的文件的名稱中。 – Newbie 2011-06-08 08:10:33

+2

是的,您只能在包裝後複製工件('WAR')。不用移動它。 '' – Arpit 2011-06-08 08:27:50

1

也許你應該爲你的問題設置上下文以獲得更好的答案。無論如何,在這裏。

  • pom.xml是一個xml文件,擁有自己的schema。因此它不同於其他 xml文件。

  • 有幾種使用maven重命名文件的方法。 This SO discussion給出了選項。其中之一是:

從本質上講,你將有一個類似條目this example(外部build.xml)聚甲醛。你antbuild.xml將有條目與此類似:

<?xml version="1.0"?> 
<project name="dummy"> 
    ... 
    <target name="rename"> 
     <move file="file.orig" tofile="file.moved"/> 
    </target> 
    ... 
</project> 
  • 您可以使用一個特殊的Maven變量時間戳記錄here。關於如何使用它,請參閱此SO discussion

    maven.build.timestamp表示構建開始的時間戳。由於Maven 2.1.0-M1

+0

非常感謝!你的解釋是詳細和有益的。如果你能給我一個代碼示例,告訴我如何重命名文件,這將是一個很大的幫助,因爲你剛剛給出的鏈接太難以理解了。謝謝, – Newbie 2011-06-08 07:04:55