我有一个如下目录结构:
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
,出现以下错误:
[错误] 无法在项目 ssui-parent 上执行目标 org.apache.maven.plugins:maven-antrun-plugin:1.6:run (create-intellij-project-files):发生 Ant BuildException:出现以下错误时执行这一行: [ERROR] java.io.FileNotFoundException: /root/ui/ssui/build.xml (No such file or directory) [ERROR] -> [Help 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
如果我删除子模块它也可以工作通过在(as ) 和(as )中创建一个
ui.rootdir
属性并从. 同样的错误。ui/pom.xml
${basedir}
ui/ssui/pom.xml
${basedir}/..
${ui.rootdir}/build.xml
ui/pom.xml
欢迎提出任何建议,但我无法重组我的目录,除非要复制的文件夹所在的位置。我确实在多模块设置中查看了 maven ${basedir} 的用法,但没有弄清楚它将如何解决我的问题。
我创建了一个说明问题的 zip 文件。如果您运行mvn install
,您会注意到子模块中发生错误,尽管它在顶级模块中运行良好(并将文件复制到我的文件夹中)