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_: デプロイの一部として、指定したパスのコンテンツ全体を (再帰的に) コピーするために使用できる。
<AdditionalDirectory>Some directory to copy</AdditionalDirectory>
-->
<!--
_AdditionalFileDestination_: すべての AdditionalFile がコピーされるディレクトリーを追加することができる (ルートからの相対パス)。 -->
<AdditionalFileDestination></AdditionalFileDestination>
<!--
_ExcludeDatabaseDrivers_: デプロイにデータベースドライバーを含めるかどうかを設定 (既定ではデプロイの一部)。除外するには値を 'true' に設定。
<ExcludeDatabaseDrivers>true</ExcludeDatabaseDrivers>
-->
</PropertyGroup>
<ItemGroup>
<!--
_AdditionalFile_: デプロイの一部として含めるファイルのリスト。-->
<!--AdditionalFile Include="Some File to copy"/-->
<!--
このファイルのコピー先: $(DeployFullPath)\$(AdditionalFileDestination)
<AdditionalFile Include="C:\myfiles\myfile.txt"/>
このファイルのコピー先: $(DeployFullPath)\TargetDir
<AdditionalFile Include="C:\myfiles\my other file.txt">
<RelativeTargetDir>TargetDir</RelativeTargetDir>
</AdditionalFile>
-->
</ItemGroup>
<Target Name="RemoveExtraFiles">
<!-- パッケージを作成する直前にファイルを削除したい場合は、このセクションのコメントを外す。
<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 というタグを使って、追加するディレクトリーごとに任意の数を追加できます。この場合、指定するディレクトリー内のすべてのファイルとディレクトリーが、元の構成に従ってコピーされます。
フォルダとその内容を含めるための IncludeDirectory タグもあります。
AdditionalFile というタグで、任意の数のファイルを追加できます。
これらのファイルはどこにコピーされるのでしょうか。選択肢は 2 つです。1 つ目の方法は、AdditionalFileDestination タグで既定のコピー先フォルダを設定します。ここでパスを設定した場合、すべてのファイルがここにコピーされます。2 つ目の方法は、ファイルに対して RelativeTargetDir という別のプロパティを設定します。このプロパティにより、ファイルが指定のディレクトリーにコピーされます。プロパティは指定のファイルにのみ適用されます。
RemoveExtraFiles というターゲットがあります。
ターゲットの ItemGroup に、削除するすべてのファイルを追加します。ファイル名やディレクトリーにはワイルドカード (*) を使用できます。
ターゲットの最後のタスクで、UnneededFiles アイテムグループに含まれるすべてのファイルが削除されます。
user.gxdproj ファイルの最後のターゲットは BeforePackaging です。これはパッケージ作成の直前に実行されます。そのため、この時点で、追加したファイルはすべて整っています。また、削除したかったものは消えています。このターゲットでは、Exec タスクを呼び出して独自のスクリプトを実行するか、独自のタスクを呼び出すために必要なインポートを追加できます。
このプロセスでは、次の変数を使用できます:
$(DeployFullPath): デプロイされたエンジンのファイルコピー先の絶対パス
$(WebPath): ソース環境の Web ディレクトリー
既定では、データベース接続ドライバーはデプロイの一部です。このようなドライバーの配布権限がないシナリオでは、user.gxdproj で [ ExcludeDatabaseDrivers ] プロパティを有効にすることで、そのドライバーをデプロイから除外できます。
SAC #46921