У меня есть небольшой служебный проект командной строки, которым я управляю с помощью Maven. Утилита представляет собой очень простое приложение для заполнения шаблона Velocity и вывода результатов в новый файл. Моя проблема в том, где разместить мои шаблоны Velocity. Когда я помещаю их в src/test/resources/foo/bar/baz
, mvn test
терпит неудачу, потому что не может найти указанный шаблон, даже если он явно присутствует в target/classes/foo/bar/baz
, где находится файл .class
для теста и тестируемого класса расположены. Если я помещу шаблон в директорию верхнего уровня проекта, тест пройден, но тогда я не следую структуре проекта Maven и подозреваю, что фактический упакованный файл .jar не будет работать. Чего мне не хватает?
UPDATE:
Тестируемый метод :
public final void mergeTemplate(final String templateFileName, final Writer writer) throws ResourceNotFoundException, ParseErrorException, MethodInvocationException, IOException, Exception {
Velocity.init();
Velocity.mergeTemplate(templateFileName, Charset.defaultCharset().name(), context(), writer);
}
Метод испытания :
@Test
public void testMergeTemplate() throws Exception {
final FooGenerator generator = new FooGenerator();
final StringWriter writer = new StringWriter();
generator.mergeTemplate("foo.yaml", writer);
Assert.assertEquals("Something went horribly, horribly wrong.", EXPECTED_RESULT, writer.toString().trim());
}
Единственное место, где я могу разместить foo.yaml
и пройти тестирование, находится в корневом каталоге проекта, то есть в качестве узла src
и target
.