Я считаю, что у меня все настроено правильно, так что grape должен спрашивать репозиторий, есть ли новая ревизия, но это не так. Пока банка существует в формате .groovy / grapes, она ее использует.
Я делаю захват через Java-код через API нашего приложения, поэтому может быть некоторая предварительная обработка, которую будет не так легко обработать, если в сценарии есть @Grab, если это имеет значение ....
Map<String,Object> args = new HashMap<String, Object>();
args.put("validate", true);
args.put("classLoader", gcl);
Map<String,Object> dependencies = new HashMap<String, Object>();
dependencies.put("group", groupID);
dependencies.put("module", artifactID);
dependencies.put("version", version);
dependencies.put("force", true);
dependencies.put("changing", true);
Grape.grab(args, dependencies);
Где groupID, artifactID и version передаются из вызывающего скрипта.
Если я удалю кеш с виноградом, он всегда правильно найдет последнюю версию. Если я затем загружу новую ревизию той же банки, она даже не попытается увидеть, есть ли новая (я просмотрел журнал Artifactory, который, как оказалось, является репозиторием, который я использую, и он также подтвержден тем фактом, что количество загрузок, которое он перечисляет, равно 0).
Я пробовал не использовать grapeConfig.xml (то есть все значения по умолчанию и использовать Grape.addResolver для добавления репозиториев) и иметь grapeConfig.xml, в котором есть мои репозитории, а также эта строка, которую я собрал из другого сообщения, должна сказать это, как долго предполагать, что кеш действителен (если я не понимаю это неправильно, но в любом случае не сработал).
<property name="ivy.cache.ttl.default" value="2m"/>
Я также заметил, что если я укажу "*" для версии, grape ДЕЙСТВИТЕЛЬНО запрашивает у репозитория метаданные, но, похоже, все еще не знает, что есть более новая ревизия. Более того, как только я это сделаю, он больше не сможет найти конкретную версию. Мне нужно удалить кеш, чтобы он вернулся к работе с определенной версией.
К сожалению, я новичок в размещении здесь сообщений, поэтому мне не разрешено включать изображения зависимостей, о которых я говорю, как они видны в Artifactory, но это будет примерно так:
test
|----sample
|--------1.0-SNAPSHOT
|----------sample-1.0-20141125.185508-1.jar
|----------sample-1.0-20141125.185508-1.pom
grab ("test", "sample", "1.0-SNAPSHOT") правильно возвращает -1 версию. Если я затем загружу новую ревизию:
test
|----sample
|--------1.0-SNAPSHOT
|----------sample-1.0-20141125.185508-1.jar
|----------sample-1.0-20141125.185508-1.pom
|----------sample-1.0-20141125.191916-2.jar
|----------sample-1.0-20141125.191916-2.pom
grab ("test", "sample", "1.0-SNAPSHOT") даже не спрашивает репозиторий, есть ли что-то новое, и возвращает кешированную банку -1.
grab ("test", "sample", "*") запрашивает у репозитория метаданные, но по-прежнему возвращает кэшированный jar-файл, а затем делает grab ("test", "sample", "1.0-SNAPSHOT") неработающим (возвращает НЕ НАШЕЛ).
Я чувствую, что здесь что-то очевидное упускает ...