編譯日期和時間
回答
不能直接在代碼中,沒有,但你可以使用Ant來做到這一點。
請參閱this page上的「袋熊」示例。
Ant TStamp任務在這裏有用。它會在編譯時創建一個時間戳,以便插入到屬性文件或代碼中。
在當前項目中設置DSTAMP,TSTAMP和TODAY 屬性。默認情況下,DSTAMP屬性爲 格式「yyyyMMdd」,TSTAMP格式爲「hhmm」,格式爲「MMMM dd yyyy」,格式爲 ,TSTAY格式爲 。使用嵌套的 元素來指定 不同的格式。
這些屬性可以在 構建文件中使用,例如,創造 時間戳的文件名,或者用來代替 裏面 文件佔位符標記來表示,例如, 的發佈日期。 此任務的最佳位置可能在 初始化目標中。
我傾向於使用這個建立包含建立時間和日期,用戶和主機,版本號等,然後我的應用程序讀取屬性文件並記錄相關的信息(我不是一個屬性文件通常在我擔心人們擺弄這些信息的環境中)。
據我所知,沒有這樣的事情。 但是在正在運行的JVM上,您可以使用類似以下代碼的方式從jar中直接獲取一些信息(這裏,信息來自編譯時放置在jar中的Manifest文件(您的構建系統是Ant,或者Maven的或其他任何東西)。隨意adapte它(不同的輸出,等等)。
public String getVersionfinal Class classe) {
String version = null;
String shortClassName = classe.getName().substring(classe.getName().lastIndexOf(".") + 1);
try {
ClassLoader cl = this.getClass().getClassLoader();
String threadContexteClass = classe.getName().replace('.', '/');
URL url = cl.getResource(threadContexteClass + ".class");
if (url == null) {
version = shortClassName + " $ (no manifest)";
} else {
String path = url.getPath();
String jarExt = ".jar";
int index = path.indexOf(jarExt);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
if (index != -1) {
String jarPath = path.substring(0, index + jarExt.length());
File file = new File(jarPath);
String jarVersion = file.getName();
JarFile jarFile = new JarFile(new File(new URI(jarPath)));
JarEntry entry = jarFile.getJarEntry("META-INF/MANIFEST.MF");
version = shortClassName + " $ " + jarVersion.substring(0, jarVersion.length()
- jarExt.length()) + " $ "
+ sdf.format(new Date(entry.getTime()));
CloseHelper.close(jarFile);
} else {
File file = new File(path);
version = shortClassName + " $ " + sdf.format(new Date(file.lastModified()));
}
}
} catch (Exception e) {
version = shortClassName + " $ " + e.toString();
}
return version;
}
將輸出一次使用類似(這裏的公共琅2.4.jar可用StringUtils.class 2008年3月15日20:43)編譯:
StringUtils的$公地琅2.4 $ 15/03/2008 20時43分16秒
好的答案。有點醜,但它適用於我。 – heaphach 2015-06-11 14:01:49
- 1. 編譯日期和時間
- 2. 使用cmake編譯日期和時間
- 3. q翻譯日期和時間
- 4. 如何在Delphi中獲得編譯日期和時間
- 5. 如何獲取C++文件編譯的日期和時間?
- 6. 在編譯期間編譯
- 7. 日期和時間
- 8. PHP MYSQL日期,時間,日期時間和時間戳
- 9. C#和xml:XS:日期時間和日期時間comparesion
- 10. GroupBy日期和時間,orderBy日期和時間AngularJS
- 11. 將日期和時間轉換爲GMT + 10日期和時間
- 12. 比較日期和日期時間
- 13. Python日期時間和日期類型
- 14. javascript日期和JSON日期時間
- 15. 從日期和時間提取日期
- 16. mysql日期和日期時間問題
- 17. SAS日期和日期時間問題
- 18. python日期時間和日期比較
- 19. 日期時間和日期比較
- 20. CakePHP-日期時間和php的日期()
- 21. PHP的日期和時間日期
- 22. Webpack和Angular2編譯時間
- 23. IronPython和時間編譯
- 24. perl編譯時間和運行時間
- 25. 編譯時間和運行時間?
- 26. 在eclipse中編譯期間在編譯期間嵌入git-describe,date和time
- 27. 動態回顧python模塊的編譯日期時間
- 28. 日期時間選擇器 - 設置開始日期和時間
- 29. 將日期和時間轉換爲日期+時間戳
- 30. 將時間和日期轉換爲mysql日期時間
您是否熟悉Ant? – BalusC 2009-12-16 21:01:20
編譯時約束意味着時間戳必須嵌入Java源文件中,而不是存儲在外部文本文件中。 – 2009-12-16 21:05:00
@Dave - 我不確定那是真的,是嗎?你不能在編譯開始之前的其他地方記錄編譯時間(我意識到它不是*完全*精確,但是......) – 2009-12-16 21:23:09