Мы запускаем код, который соответствует стандарту для создания временного каталога:
import java.nio.file.Files;
И затем:
tmp = Files.createTempDirectory("ourprefix-");
Это эффективно создает каталоги в /tmp/
, так чтомы получаем такие вещи, как /tmp/ourprefix-1234
или аналогичные.
К сожалению, этот базовый каталог /tmp/
, кажется, исправлен, и, поскольку на нашем сервере сборки многие вещи, как правило, помещают свои временные файлы туда, и потому что раздел /tmp / is on довольно мала, это проблема.
Есть ли способ настроить это средство извне (т.е. без изменения кода)?Я бы предположил, что /tmp/
является значением по умолчанию и может быть переопределено путем установки специальной переменной среды или (более Javaish) передачи специального свойства компилятору (например, -Djava.tmp.root=/path/to/my/larger/partition/tmp
).
Я пытался использовать java.io.tmpdir
но установка этого не имела никакого эффекта;кажется, что это значение по умолчанию, если createTempDirectory()
ничего не дано, но в нашем случае код передает префикс.
Есть идеи, как добиться того, чего я хочу, без изменения исходного кода?
EDIT
После некоторого исследования я обнаружил, что это работает очень хорошо:
import java.nio.file.Path;
import java.nio.file.Files;
import java.io.IOException;
public class TestTempDir {
public static void main(String[] args) throws IOException {
System.out.println(System.getProperty("java.io.tmpdir"));
Path path = Files.createTempDirectory("myprefix-");
System.out.println(path.toFile().getAbsolutePath());
}
}
Скомпилируйте с javac TestTempDir.java
, подготовьте с mkdir tmp
и запустите с java -Djava.io.tmpdir=
pwd /tmp TestTempDir
thisпросто работает, как и ожидалось:
/my/work/path/tmp
/my/work/path/tmp/myprefix-1525078348397347983
Моя проблема, скорее всего, связана с Jenkins и его плагином Maven, который не передает заданные свойства в тестовые случаи: - /