Czy jest jakiś sposób na zdefiniowanie stałej wartości Java w czasie kompilacji

Kiedy pisałem biblioteki w C / C ++, nabrałem zwyczaju zwracania daty / godziny kompilacji. To zawsze było wkompilowane w bibliotekę, tak by odróżnić kompilacje biblioteki. Dostałem to, zwracając #define w kodzie:

C ++:

<code>#ifdef _BuildDateTime_
   char* SomeClass::getBuildDateTime() {
      return _BuildDateTime_;
   }
#else
   char* SomeClass::getBuildDateTime() {
      return "Undefined";
   }
#endif
</code>

Następnie w kompilacji miałem '-D_BuildDateTime_ =Date'w skrypcie kompilacji.

Czy istnieje jakikolwiek sposób na osiągnięcie tego lub podobnego w Javie bez konieczności pamiętania o ręcznej edycji jakichkolwiek plików lub dystrybucji jakichkolwiek oddzielnych plików.

Jedną z sugestii, jaką otrzymałem od współpracownika, było uzyskanie pliku mrówki w celu utworzenia pliku w ścieżce klasy i spakowanie go do pliku JAR i odczytanie go metodą.

Coś w stylu (zakładając, że utworzony plik nosi nazwę „DateTime.dat”):

<code>// 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();
}
</code>

Moim zdaniem jest to hack i można go obejść / złamać przez kogoś o podobnej nazwiena zewnątrz JAR, ale na ścieżce klasy.

W każdym razie moje pytanie brzmi, czy istnieje jakiś sposób na wprowadzenie stałej do klasy w czasie kompilacji

EDYTOWAĆ

Powodem, dla którego rozważam użycie pliku generowanego zewnętrznie w JAR, jest hack, ponieważ tojest) biblioteka i zostanie osadzona w aplikacjach klienckich. Te aplikacje klienckie mogą definiować własne programy ładujące klasy, co oznacza, że ​​nie mogę polegać na standardowych regułach ładowania klas JVM.

Moim osobistym upodobaniem byłoby używanie daty z pliku JAR zgodnie z sugestią serg10.

questionAnswers(7)

yourAnswerToTheQuestion