私は現在、Ant から Maven に移行されたかなり大規模なプロジェクトに取り組んでいます。実際のビルド プロセスに問題はありません (ソース コードを適切にコンパイルおよびパッケージ化します)。
問題は、プロジェクトの追加リソースを生成するターゲットもたくさんあることです (LessCSS のコンパイル、ドキュメントの生成とアップロード、tld
カスタム タグと関数のファイルの生成など)。これらのタスクをどのように処理すればよいかわかりません。例として、CSS&JS をビルドするターゲットを見てみましょう (他のものは多かれ少なかれ似ていますが、接続されていません)。次のようになります (簡略化)。
<target name="build.css_js">
<concat destfile="${webapp.dir}/scripts/main.js">
<fileset dir="${webapp.dir}/scripts/src" includes="*.js"/>
</concat>
<!-- build css files from less sources -->
<taskdef name="lesscss" classname="com.asual.lesscss.LessEngineTask" classpathref="libraries" />
<lesscss input="${webapp.dir}/syles/src/input.less" output="${webapp.dir}/styles/output.css" />
</target>
ではpom.xml
、次のプラグインをセットアップしています。
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<configuration>
<tasks>
<echo message="Hello World from pom.xml"/>
<ant target="build.css_js"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
私が使用している依存関係は、SVN リポジトリにはもうありません (Maven によって管理されているため)。そのため、ライブラリ変数を Maven リポジトリを指すように切り替えました。
<property name="lib.dir" location="${env.HOMEPATH}/.m2/repository" />
そのパスは私のマシンでのみ有効な場合があるため、これは良くありません。Maven リポジトリからライブラリを参照する他の方法がわかりません。Ant ターゲットを実行するためにそれらが必要です。
- 私のアプローチは大丈夫ですか、それとも物事を行うためのより良い方法はありますか?
- ライブラリの問題を解決するにはどうすればよいですか?
- プロジェクトをパッケージ化するときに必要なリソースと、そうでないリソースがあります。
コンパイル/パッケージの範囲外のライフサイクル フェーズはありますか?site
自分のニーズに合ったライフサイクルを見つけました。 - 理想的には、ant ビルド ファイルを完全に放棄する必要がありますが、スクリプトを Maven プラグインとして実行する努力に見合う価値があるかどうかはわかりません (現在、その方法がわかりません)。これについてあなたはどう思いますか?
私はMavenを初めて使用するので、提案をいただければ幸いです。