Всегда используйте правильные переменные для доступа к специальным каталогам, поскольку многомодульные сборки имеют рабочий каталог, отличный от локальных:
Итак
- вместо
mydir
используйте ${project.basedir}/mydir
- вместо
target/mydir
используйте ${project.build.directory}/mydir
- вместо
target/classes/mydir
используйте ${project.build.outputDirectory}/mydir
Эти переменные всегда вычисляются для текущего проекта, независимо от того, откуда он вызывается. Вот Обзор переменных POM (не полный, но самый важный материал там)
Кроме того, если вы когда-нибудь захотите выполнить некоторую интерактивную отладку в стиле запросов, вам подойдет help: оценивать mojo :
просто позвоните
mvn help:evaluate
и вам будет предложено выражение. Если вы введете выражение, например, ${project.build.plugins[0]}
, объединенный домен для указанного элемента будет указан
EDIT:
хорошо, теперь я думаю, что вижу проблему. тогда почему бы просто не ссылаться на каталог в xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE myapp-data SYSTEM "target/test-classes/myapp-data.dtd" >
Я знаю, что это не красиво, но оно должно работать, многомодульное или нет. текущим каталогом для модульных тестов всегда является текущий $ {project.basedir}, а не каталог родительского проекта.