2017-09-20 5 views
1

私の小さなプロジェクトをパッケージ化しようとしている人は誰もが慣れ親しんでいます。私の配布パッケージを構築する場合、以下のように、構造は次のとおりです。グラデルビルドで起動スクリプトの場所をカスタマイズする

my-project.zip 
| 
+- my-project 
    | 
    +- bin (containing start scripts) 
    +- lib 
    +- xyz (folders from src/dist) 

プロジェクトのルートフォルダの代わりに、binサブフォルダに起動スクリプトを持っている私は何を達成したい(私はこれは大会のいくつかの種類であることを知って、アプリケーションフォルダ内からアプリケーションを開始することもできます)。

my-project.zip 
| 
+- my-project 
    | 
    +- lib 
    +- xyz (folders from src/dist) 
    +- my-project.bat 
    +- my-project.sh 

これは可能ですか?

tasks.startScripts.outputDirを試しましたが、成功しませんでした(スクリプトは配布パッケージから完全に削除されました)。

更新

lu.koerferの答えに加えて、私のアカウントに変更されたAPP_HOMEを取るために起動スクリプトを変更する必要がありました:

startScripts { 
    startScripts.applicationName = artefactsBaseName 
    doLast { 
     def windowsScriptFile = file getWindowsScript() 
     def unixScriptFile = file getUnixScript() 
     windowsScriptFile.text = windowsScriptFile.text.replace('set APP_HOME=%DIRNAME%..', 'set APP_HOME=%DIRNAME%') 
     unixScriptFile.text = unixScriptFile.text.replace('cd "`dirname \"$PRG\"`/.." >/dev/null', 'cd "`dirname \"$PRG\"`" >/dev/null') 
    } 
} 
+0

あなたはどのプラグインを使用していますか? – Opal

+1

私は 'java'、' application'と 'eclipse'を使用しています。 – dosenfant

答えて

1

あなたが作成を気にする必要はありません(startScriptsタスク)、ファイルの配置場所を制御するzipファイル(distZipタスク)の作成について説明します。この目的のために、Gradleアプリケーションプラグインで自動的に適用されるGradle DistributionプラグインからdistZipタスクまたはDistributionContainerを直接使用することができます。 DistributionContainerでは、Gradleプロジェクトで複数のディストリビューションの作成を管理でき、Applicationプラグインはデフォルトでmainディストリビューションを使用します。

distributions.main { 
    contents { 
     from startScripts 
    } 
} 

コードのこの部分は、単にmain配信コンテンツへstartScriptsタスクの出力を加算します。 intoメソッドを持つ子CopySpecを指定しなかったため、このディストリビューションのルートフォルダに配置されます。

開始スクリプトのみをルートフォルダに入れますが、binフォルダには入れません。 Copyタスクのファイルは、宛先パスではなくソースパスに基づいて除外できるため、コピー先の宛先はわかっているので、eachFileメソッドを使用して除外する必要があります。

distZip { 
    eachFile { file -> 
     if (file.path.contains('bin')) { 
      file.exclude() 
     } 
    } 
} 

もちろん、このコードは、binディレクトリ全体をzipファイルから削除するので、他のユースケースのためにクロージャの条件を書き直す必要があります。

+0

これは私が必要としていたものです! – dosenfant

関連する問題