Во-первых, убедитесь, что ваша программа или инструмент могут ПОКАЗАТЬ номер версии.Но откуда это?Мы включили его в сборку.
Просто убедитесь, что он виден где-то, когда они запускают его!Если нет ничего работоспособного, добавьте Main и сделайте его Main-Class, который просто печатает версию.Затем вы можете сказать: «Пожалуйста, введите java -jar YourLibrary.jar
, и он просто запускает main и печатает вашу версию.
Вот начало кода для чтения ресурсов из вашего jar, изнутри jar, если ресурс (такой как Version.txt) находится рядом с klazz:
ClassLoader loader = klazz.getClassLoader();
InputStream in = loader.getResourceAsStream (name);
IМне нравится делать это автоматически в каждой сборке, поэтому я не забываю обрушить его.Вместо текстового файла я использую .properties ... но вы можете сделать то же самое в Version.txt.
(На самом деле, на данный момент мы включаем только время сборки. Но идея заключается в том,то же самое.)
Я делаю это так - у меня есть файл Version.properties с:
buildHost = @HOSTNAME@
buildTime = @BUILDTIME@
buildUser = @USERNAME@
И как часть сценария ANT, мы делаем:
<tstamp>
<format property="BUILDTIME" pattern="yyyy.MM.dd.HH:mm:ss z" locale="en,UK" />
</tstamp>
<exec executable="hostname" outputproperty="HOSTNAME">
<!-- note, this is unixey, of course -->
<arg value="-s" />
</exec>
<property environment="env"/>
<property name="USERNAME" value="${env.USER}"/>
<property name="build.info" value="path/to/Version.properties" />
<copy file="${build.info}" tofile="${obj.dir}/${build.info}" overwrite="true">
<filterchain>
<replacetokens>
<token key="BUILDTIME" value="${BUILDTIME}"/>
<token key="HOSTNAME" value="${HOSTNAME}"/>
<token key="USERNAME" value="${USER}"/>
</replacetokens>
</filterchain>
</copy>
Примечание. Вышеприведенное описание относится к конкретной платформе, но вы понимаете, как это сделать.
А то, как вы читаете файлы .properties, это еще одна небольшая куча кода, но достаточно простая.