1

次のようなディレクトリ構造があります。

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.rootdirui/pom.xml${basedir}ui/ssui/pom.xml${basedir}/..${ui.rootdir}/build.xmlui/pom.xml

任意の提案を歓迎しますが、コピーするフォルダーが存在する場所を除いて、ディレクトリを再構築することはできません。マルチモジュールのセットアップで maven ${basedir} の使用法を見ましたが、それが私の問題をどのように解決するかわかりませんでした。

問題を説明する zip ファイルを作成しました。実行mvn installすると、サブモジュール内からエラーが発生することがわかりますが、最上位モジュールでは問題なく実行されます (そして、私のフォルダーにファイルがコピーされます)。

4

1 に答える 1

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>
于 2015-12-23T15:51:39.243 に答える