次のようなディレクトリ構造があります。
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 has occurred: The following error occurred whileこの行を実行: [エラー] java.io.FileNotFoundException: /root/ui/ssui/build.xml (そのようなファイルまたはディレクトリはありません) [エラー] -> [ヘルプ 1]
/root/ui/ssui
がどこにあるかではなく、から実行しているようpom.xml
です。
デバッグ完了
pom.xml
を指す代わりにmy を変更する../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 )の両方にプロパティを作成し、から参照することで、親ディレクトリを示す Maven2 プロパティでソリューションを試しました。同じエラー。
ui.rootdir
ui/pom.xml
${basedir}
ui/ssui/pom.xml
${basedir}/..
${ui.rootdir}/build.xml
ui/pom.xml
任意の提案を歓迎しますが、コピーするフォルダーが存在する場所を除いて、ディレクトリを再構築することはできません。マルチモジュールのセットアップで maven ${basedir} の使用法を見ましたが、それが私の問題をどのように解決するかわかりませんでした。
問題を説明する zip ファイルを作成しました。実行mvn install
すると、サブモジュール内からエラーが発生することがわかりますが、最上位モジュールでは問題なく実行されます (そして、私のフォルダーにファイルがコピーされます)。