У меня есть структура каталогов, подобная следующей:
root/ui/
root/ui/pom.xml
root/ui/build.xml
root/ui/_idea/{files that I want copied are here}
root/ui/ssui/pom.xml (An inner module)
В моем файле POM я пытаюсь вызвать файл ant, используя
<tasks>
<ant antfile="build.xml" target="copyIntelliJFiles"/>
</tasks>
И мой build.xml содержит
<project name="ui-parent" default="copyIntelliJFiles" basedir=".">
<target name="copyIntelliJFiles">
<copy todir="." overwrite="true">
<fileset dir="_idea"/>
</copy>
</target>
</project>
Однако, когда я запускаю mvn install из /root/ui, я получаю следующую ошибку:
[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins:maven-antrun-plugin:1.6:run (create-intellij-project-files) в проекте ssui-parent: произошло исключение Ant BuildException: произошла следующая ошибка при выполнение этой строки: [ОШИБКА] java.io.FileNotFoundException: /root/ui/ssui/build.xml (Нет такого файла или каталога) [ОШИБКА] -> [Справка 1]
Кажется, он запускается из /root/ui/ssui, а не из pom.xml.
Отладка завершена
Если я изменю свой
pom.xmlна../build.xml, сообщение об ошибке станет таким:java.io.FileNotFoundException: /root/build.xml (No such file or directory)Если я удалю определение подмодуля в
/root/ui/pom.xml, то путь распознается правильно (но мне нужны подмодули)Если я изменю ссылку build.xml на
${basedir}/build.xml, я получу ту же ошибку:java.io.FileNotFoundException: /root/ui/ssui/build.xml, и это также сработает, если я удалю подмодульПопробовал решение в свойстве Maven2, которое указывает родительский каталог, создав Свойство
ui.rootdirкак вui/pom.xml(как${basedir}), так и вui/ssui/pom.xml(как${basedir}/..) и ссылается на${ui.rootdir}/build.xmlизui/pom.xml. Та же ошибка.
Любые предложения приветствуются, но я не могу изменить структуру своих каталогов, за исключением того, где находится копируемая папка. Я просмотрел Использование maven ${basedir} в многомодульной настройке. но не понял, как это решит мою проблему.
Я создал ZIP-файл, иллюстрирующий проблему. Если вы запустите mvn install, вы заметите, что ошибка возникает внутри подмодуля, хотя он отлично работает в модуле верхнего уровня (и копирует файл в мою папку)
${basedir}/перед build.xml. Более подробную информацию см. на books.sonatype.com/mcookbook/reference/ch04s03.html а>. На самом деле, он работает так же легко, как то, что вы упомянули. - person Rao   schedule 23.12.2015${basedir}, я обновил раздел отладки, чтобы он содержал эту информацию. Если у меня нет подмодулей, то работают оба способа. - person Juan Mendes   schedule 23.12.2015If I remove the sub-module definition in /root/ui/pom.xml, then the path is recognized correctly (but I need the submodules)- person Juan Mendes   schedule 23.12.2015