Apache Mavenは、Java オープン ソース エコスフィアで非常に人気のあるビルドおよび依存関係管理ツールです。コンパイル済みのFree Pascal / Delphi ユニットを処理できるかどうかを確認するためにいくつかのテストを行ったところ、実装が簡単であることがわかりました。だからそれは可能だろう
- Free Pascal (または Delphi) 用にプリコンパイルされたオープン ソース ライブラリをパブリック Maven リポジトリでリリースする
- 依存関係情報を含むこのリポジトリにメタデータを含めます
- コマンド ラインで Maven を使用して、パブリック リポジトリからオープン ソース ライブラリをダウンロードし、すべての依存関係を自動的に解決します。
- プロキシとして機能するローカルリポジトリは、頻繁に使用されるバイナリをキャッシュするために使用できます
- チェックサムの自動生成と検証 (Maven が提供) により、破損したバイナリをダウンロードするリスクが軽減されます。
- ソース コードやドキュメント ファイルでさえ、バイナリと共に提供される可能性があります。
- バイナリは、デバッグ情報ありまたはなしで提供できます
- Hudson、TeamCity、CruiseControlなどの継続的インテグレーション サーバーを使用して、変更がソース管理システムに送信されるたびにプロジェクトをビルドし、ビルド エラーについて開発者に通知できます。
この依存関係管理の方法は、複雑な依存関係を持つ多くのサードパーティ ライブラリを使用するオープン ソース プロジェクトにとって非常に有益です。間違ったバージョンを使用することによって引き起こされる典型的な競合を回避できます。
開発者にとって、プロジェクトの編集と構築のワークフローは最小限に抑えられます。
- 内部バージョン管理システムからプロジェクト ソースをチェックアウトする
- ソースファイルを編集
mvn package
ワークステーションのローカル リポジトリにまだない場合は、必要なすべてのサード パーティ ライブラリ (プリコンパイル済みユニット) を自動的にダウンロードするために実行します。- コンパイルして実行
プロジェクト フォルダーに必要な Apache Maven の唯一の追加ファイルは、プロジェクト情報を含む POM.XML ファイルです。
編集: Maven は必要なタスクの一部に使用できますが、ネイティブ Free Pascal で Maven のようなソリューションを実装すると、いくつかの利点があります。Java SDK が不要、Free Pascal が利用可能なすべての開発プラットフォームのサポート、Pascal でのメンテナンスとプラグイン開発。
Maven のようなツールの使用は、オープン ソース プロジェクトだけでは役に立ちません。商用プロジェクトでも、パブリック Maven リポジトリにあるアーティファクトに同じ方法でアクセスして使用できます。
Maven 機能は、http://maven.apache.org/maven-features.htmlにリストされています。
アップデート:
ユースケースの 1 つは Lazarus のビルドで、Maven が必要なすべてのライブラリをダウンロードし、必要なビルド パス引数を指定してコンパイラを呼び出します。下位レベルの依存関係の変更は、親ビルドまで自動的に伝播されます。
考えられる利点:
- 新しいワークステーションのセットアップに必要な時間を短縮し、サードパーティ製ライブラリを手動でインストールする必要がありません
- 間違ったライブラリ バージョンによるエラーの減少、バージョンの競合の検出 (たとえば、2 つのライブラリが 3 番目のライブラリの異なるバージョンに依存している場合)
- 社内で作成されたアーティファクトは、ローカルの Maven リポジトリに追加して、開発者とプロジェクトの間で共有できます。メタデータを含むすべてのアーティファクトの中央ストレージ
- 同じソースとプロジェクト メタデータ ファイル (pom.xml) を使用するだけで、ビルドを再現できます。
- 開発時間を短縮し、プロジェクトの安定性を高めることができます
更新 #2: FPMake
Free Pascal 用のFPMakeビルド システムは、多くの可能性を秘めたツールのようです。多くの点で、Maven と非常によく似ています。
- FPMake は、FPC 用に開発され、FPC とともに配布される Pascal ベースのビルド システムです。
- FPMake は、標準ディレクトリのようないくつかの制限を定義することにより、建物を標準化します
- このコマンド
fppkg <packagename>
は、パッケージのデータベースを検索して抽出し、fpmake.pp をコンパイルして実行します。 - 標準のビルド ターゲット (クリーン、ビルド、インストールなど) があります。
- リポジトリへのインポートに適した「マニフェスト」ファイルを作成できます (
mvn deploy
または などmvn install
)。マニフェストは、Maven の pom.xml に非常によく似た XML ファイルです。
FPMake マニフェスト ファイル:
<packages>
<package name="my-package">
<version major="0" minor="7" micro="6" build="1"/>
<filename>my-package-0.7.6-1.zip</filename>
<author>my name</author>
<license>GPL</license>
<homepageurl>http://www.freepascal.org/</homepageurl>
<email>myname@freepascal.org</email>
<description>this is the package description</description>
<dependencies>
<dependency>
<package packagename="rtl"/>
</dependency>
</dependencies>
</package>
</packages>