Я использую функцию внешнего компоновщика в eclipse для вызова bash-скрипта, который будет автоматически генерировать класс BuildInfo.java для моего проекта (я искал здесь на stackoverflow для способа встраивания git-description и date в eclipse (не- могу!) собрать, но не смог найти), мой скрипт выглядит так:
#!/bin/bash
VERSION=$(git describe --tag)
DATE=$(date "+%Y-%m-%d")
TIME=$(date "+%H:%M")
echo "Version $VERSION, built on $DATE $TIME"
cat > src/com/bla/bla/BuildInfo.java <<DELIM
package com.bla.bla;
// Auto-generated, triggered by project build
public class BuildInfo {
public static String version = new String("$VERSION");
public static String date = new String("$DATE");
public static String time = new String("$TIME");
}
DELIM
Я настраиваю внешний компоновщик на выполнение каждой сборки (даже автоматической) перед сборщиками java / android,Эта схема действительно работает хорошо, когда я полностью очищаю проект, однако, когда я обновляю другой файл, хотя Eclipse действительно выполняет мой внешний компоновщик, и класс BuildInfo действительно регенерируется, Eclipse все еще использует старую кэшированную версию класса для конечного результата,поэтому я вижу старую информацию, которая иногда может быть хуже, чем отсутствие информации о сборке.
У вас есть идея, как я могу сказать Eclipse, что этот файл сгенерирован, и он вообще не должен его кэшировать, нозагрузить его с диска после того, как мой внешний компоновщик готов и до java?Есть ли другое элегантное решение для передачи этих данных в сборку?
Спасибо!