GeneXus のアプリケーション デプロイ ツールは、GeneXus で生成したアプリケーションをオンプレミスサーバーまたは幅広いクラウドプロバイダーにデプロイできる強力なツールです。
このツールの主な目的は、参照ツリーを精査し、アプリケーションを本番環境で正しく実行するために必要なオブジェクトをすべて確認することです。
しかし、ナレッジベース内にない何かが必要である場合や、ナレッジベースから何かを削除する必要がある場合があります。たとえば、セキュリティ上の理由や、実行時に使用されないことが確実なオブジェクトが参照されている場合です。また、本番環境に移行する前や、WAR ファイルまたは ZIP ファイルを作成する前にカスタムスクリプトを実行したい場合もあります。
WAR ファイルまたは ZIP ファイルの生成は、2 つのタスクから構成されます。最初のタスク (CreateDeployProject) では、拡張子 .gxdproj の MSBuild スクリプトファイルを生成します。このファイルには、選択したデプロイメントユニットまたはオブジェクトのデプロイに関わる、ナレッジベース内の GeneXus オブジェクトがすべて含まれます。2 つ目のタスク (CreatePackage) では、事前に生成した gxdproj ファイルの内容に基づき、宣言されているすべてのオブジェクト用に生成されたすべてのファイルを探します。これらのタスクの詳細については、次のトピックを参照してください: アプリケーションをデプロイする MSBuild タスク
CreateDeployProject タスクを実行すると、<デプロイメントユニット名> _user.gxdproj というファイルが検索されます。ファイルが存在しない場合は作成されますが、上書きされることはありません。
ファイルは最初は次のような内容になります:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!--AdditionalDirectory>some directory to copy</AdditionalDirectory-->
</PropertyGroup>
<!-- You can add a directory where every AdditionalFile will be copied (relative to the root) -->
<PropertyGroup>
<AdditionalFileDestination></AdditionalFileDestination>
</PropertyGroup>
<ItemGroup>
<!--AdditionalFile Include="some File to copy"/-->
<!--
This file will be copied to $(DeployFullPath)\$(AdditionalFileDestination)
<AdditionalFile Include="C:\myfiles\myfile.txt"/>
This file will be copied to $(DeployFullPath)\TargetDir
<AdditionalFile Include="C:\myfiles\my other file.txt">
<RelativeTargetDir>TargetDir</RelativeTargetDir>
</AdditionalFile>
-->
</ItemGroup>
<Target Name="RemoveExtraFiles">
<!-- Uncomment this section in case you want to delete files right before creating the package
<ItemGroup>
<UnneededFiles Include="$(DeployFullPath)\your\file\goes\here"/>
</ItemGroup>
<Message Text="RemovingUserExcludedFiles" Importance="high" />
<Delete Files="@(UnneededFiles)"/>
-->
</Target>
<Target Name="BeforePackaging" DependsOnTargets="RemoveExtraFiles">
</Target>
</Project>
AdditionalDirectory というタグを使って、追加するディレクトリーごとに任意の数を追加できます。この場合、指定するディレクトリー内のすべてのファイルとディレクトリーが、元の構成に従ってコピーされます。
AdditionalFile というタグで、任意の数のファイルを追加できます。
これらのファイルはどこにコピーされるのでしょうか。選択肢は 2 つです。1 つ目の方法は、AdditionalFileDestination タグで既定のコピー先フォルダを設定します。ここでパスを設定した場合、すべてのファイルがここにコピーされます。2 つ目の方法は、ファイルに対して RelativeTargetDir という別のプロパティを設定します。このプロパティにより、ファイルが指定のディレクトリーにコピーされます。プロパティは指定のファイルにのみ適用されます。
RemoveExtraFiles というターゲットがあります。
ターゲットの ItemGroup に、削除するすべてのファイルを追加します。ファイル名やディレクトリーにはワイルドカード (*) を使用できます。
ターゲットの最後のタスクで、UnneededFiles アイテムグループに含まれるすべてのファイルが削除されます。
user.gxdproj ファイルの最後のターゲットは BeforePackaging です。これはパッケージ作成の直前に実行されます。この時点では、ファイルの追加や削除は完了しています。このターゲットでは、Exec タスクを呼び出して独自のスクリプトを実行するか、独自のタスクを呼び出すために必要なインポートを追加できます。
このプロセスでは、次の変数を使用できます:
$(DeployFullPath): デプロイされたエンジンのファイルコピー先の絶対パス
$(WebPath): ソース環境の Web ディレクトリー
この機能は GeneXus 16 Upgrade 10 以降で利用できます。
|