3

プロジェクトをコンパイルし、テストを実行してjarを作成し、それをlaunch4jでパッケージ化するbuild.gradleがあります。Wix を使用してインストーラーも作成できるようにしたいのですが、.execute() から起動するのに苦労しているようです。

キャンドルとライトに必要なファイルは \build\installer にあります。ただし、ビルド ファイルで execute を呼び出してこれらのファイルにアクセスしようとすると、常に失敗します。

/build/installer で動作する 2 つ目の build.gradle を作成しました。それは:

task buildInstaller {

def command = project.rootDir.toString() + "//" +"LSML Setup.wxs"
def candleCommand = ['candle', command]    
def candleProc = candleCommand.execute()
candleProc.waitFor()
def lightCommand = ['light' , '-ext', 'WixUIExtension', "LSML Setup.wixobj"]
def lightProc = lightCommand.execute()


}

メインのビルド ファイルから 2 番目のビルド ファイルを実行して動作させる方法はありますか、それとも直接実行を呼び出して動作させる方法はありますか?

ありがとう。

4

2 に答える 2

1

プロジェクトがいくつかの gradle ビルド (gradle プロジェクト) で構成されている場合は、依存関係を使用する必要があります。メソッドで作業するexecute()のは悪い考えです。私はこのようにします:

ROOT/candle/candle.gradle

task build(type: Exec) {
    commandLine 'cmd', '/C', 'candle.exe', '...'
}

ROOT/アプリ/build.gradle

task build(dependsOn: ':candle:build') {
    println 'build candle'
}

ROOT/アプリ/settings.gradle

include ':candle'
project(':candle').projectDir = "$rootDir/../candle" as File

ところで、Execタスクに問題があったため、プロジェクトでそれを置き換えたand.exec()ので、candle タスクは次のようになります。

task candle << {
    def productWxsFile = new File(buildDir, "Product.wxs")
    ant.exec(executable:candleExe, failonerror: false, resultproperty: 'candleRc') {
        arg(value: '-out')
        arg(value: buildDir.absolutePath+"\\")
        arg(value: '-arch')
        arg(value: 'x86')
        arg(value: '-dInstallerDir='+installerDir)
        arg(value: '-ext')
        arg(value: wixHomeDir+"\\WixUtilExtension.dll")
        arg(value: productWxsFile)
        arg(value: dataWxsFile)
        arg(value: '-v')

    }
    if (!ant.properties['candleRc'].equals('0')) {
        throw new Exception('ant.exec failed rc: '+ant.properties['candleRc'])
    }
}

マルチ プロジェクトの詳細については、 http://www.gradle.org/docs/current/userguide/multi_project_builds.html を参照してください

于 2013-09-16T08:50:59.423 に答える