KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
When I used to write libraries in C/C++ I got into the habit of having a method to return the compile date/time. This was always a compiled into the library so would differentiate builds of the library. I got this by returning a #define in the code: C++: #ifdef _BuildDateTime_ char* SomeClass::getBuildDateTime() { return _BuildDateTime_; } #else char* SomeClass::getBuildDateTime() { return "Undefined"; } #endif Then on the compile I had a '-D_BuildDateTime_= Date ' in the build script. Is there any way to achieve this or similar in Java without needing to remember to edit any files manually or distributing any seperate files. One suggestion I got from a co-worker was to get the ant file to create a file on the classpath and to package that into the JAR and have it read by the method. Something like (assuming the file created was called 'DateTime.dat'): // I know Exceptions and proper open/closing // of the file are not done. This is just // to explain the point! String getBuildDateTime() { return new BufferedReader(getClass() .getResourceAsStream("DateTime.dat")).readLine(); } To my mind that's a hack and could be circumvented/broken by someone having a similarly named file outside the JAR, but on the classpath. Anyway, my question is whether there is any way to inject a constant into a class at compile time EDIT The reason I consider using an externally generated file in the JAR a hack is because this is ) a library and will be embedded in client apps. These client apps may define their own classloaders meaning I can't rely on the standard JVM class loading rules. My personal preference would be to go with using the date from the JAR file as suggested by serg10.
Tags (comma-separated)
Save Edits
Cancel