我有一个如下目录结构:
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:在项目ssui-parent上运行(create-intellij-project-files):发生了Ant BuildException:以下执行此行时发生错误: [错误] java.io.FileNotFoundException:/root/ui/ssui/build.xml(没有这样的文件或目录) [错误] - &gt; [帮助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
如果删除子模块也会有效
通过在ui.rootdir
(ui/pom.xml
)和${basedir}
ui/ssui/pom.xml
中创建${basedir}/..
属性,在Maven2 property that indicates the parent directory尝试了解决方案(Usage of maven ${basedir} in multi-module setup 1}})并从${ui.rootdir}/build.xml
引用ui/pom.xml
。同样的错误。
欢迎任何建议,但我无法重构我的目录,除了要复制的文件夹所在的位置。我确实看过created a zip file,但没有弄清楚它将如何解决我的问题。
我{{3}}说明了这个问题。如果您运行mvn install
,您会注意到子模块中发生错误,但它在顶级模块中运行正常(并将文件复制到我的文件夹中)
答案 0 :(得分:0)
以下解决方案对我有用。它不太可能适用于其他人,因为它依赖于环境变量(我们的构建已经需要)。
在root/ui/pom.xml
中,我添加了
<properties>
<ui.basedir>${env.VCLOUD_SRC_ROOT}/ui</ui.basedir>
</properties>
...
<target>
<copy todir="${ui.basedir}" overwrite="true">
<fileset dir="${ui.basedir}/_idea"/>
</copy>
<replace file="${ui.basedir}/.idea/libraries/swfaddress_2_3.xml" token="$LOCAL_REPO$" value="${local.repo}" />
</target>