質問

ようにしていを書く、Gradleのタスクをコピーが発生するwarファイルを自tomcatインスタンス:

このきょとんどのデバッグす:

 task deploylocal() << {
    println "Copy from ${buildDir}\\libs into ${tomcatHome}/webapps"
    copy{
      from "${buildDir}\\libs"
      into "${tomcatHome}/webapps"
      include '*.war'
    }
  }

そのアイデアだのは次のどれですか。

他のヒント

WARタスクは、それが生成する成果物を認識してます。

task deployToTomcat(type: Copy) {
    from war.archivePath
    into "${tomcatHome}/webapps"
}

私はこれを達成します:

task deploy (dependsOn: war){
    copy {
        from "build/libs"
        into "C:/dev/jetty-distribution-9.1.4.v20140401/webapps"
        include "*.war"
    }
}

このようにそれを実行します:

gradle deploy

きのコースをご利用tomcatの引き出しおよび設定ができます私の設定を防止からの利用の変更に戦争&tomcatのオプションです。

個人的には以下のような風味にさらされたから。gradle).

tomcat_home='tomcat_location'
tomcat_bin=tomcat_home + '/bin'
tomcat_start=tomcat_bin + '/startup.sh'
tomcat_stop=tomcat_bin + '/shutdown.sh'
tomcat_webapps = tomcat_home + '/webapps'

task tom << {
    if (project.hasProperty('start')) {
        startTom()
    } else if (project.hasProperty('stop')) {
        stopTom()
    } else if (project.hasProperty('deployNstart')) {
        stopTom()
        webappsCopy()
        startTom()
    } else {
        throw new RuntimeException('unrecognized option')
    }
}

def stopTom() {
    executeCmd(tomcat_stop)
}

def startTom() {
    executeCmd(tomcat_start)
}


def executeCmd(command) {
    proc = command.execute()
    proc.waitFor()
}

def webappsCopy() {
    copy {
        from 'war file location' // could be exploded or war itself
        into tomcat_webapps
    }
}

--を呼び出す様々なオプションの'トム-タスクコマンドラインから--

$ gradle tom -Pstart
$ gradle tom -Pstop
$ gradle tom -PdeployNstart

これは潜在的に成長さらに、追加のコマンドオプションに関連しTomcat.数へのポインター:

  1. 移動の場所等るので、gradle.性行う作業 環境も様々です。
  2. 世論調査おtomcatサーバーのポートの微調整 オプションmsgs.
  3. 移動プラグイン/スコードが再利用されます。

この限定バージョンの作品は私にとって現在:-)

あなたは Gradleの貨物にプラグインする打撃を与えることができます。それはあなたがローカルおよびリモートTomcatにWARファイルをデプロイすることができます。

は、deploylocalが実行される前に、必ず戦争のアーカイブが同梱取得されていることを確認してください。 たぶん、あなたは依存関係を定義することができます:

task deploylocal(dependsOn: build) << {

NB libsDirという名前のJavaプラグインのコンベンション施設があります。これは、基準ビルドにあなたを可能に/より良い方法でディレクトリをLIBSます:

 task deploylocal(dependsOn: build) << {
    println "Copy from ${libsDir.getPath()} into ${tomcatHome}/webapps"
    copy{
      from libsDir
      into "${tomcatHome}/webapps"
      include '*.war'
    }
  }

まず、デバッグしようとしています。タスクの実行の順序を確認してください。 warファイルが生成された後、それそれが実行されているかどうかを確認します。それは、UP-TO-DATE言うまたかどうか。

問題は、このタスクと、コピーしたい出力間の依存関係の欠如可能性があります。

コピータスクのインスタンスで、この一般的なタスクを交換してみてください、とあなたがコピーしようとしているwarファイルに依存させます。

このような何かます:

task deployLocal(type: Copy) { 
    dependsOn configurations.archives.buildArtifacts
    from configurations.archives.allArtifacts*.file 
    into("$tomcatHome/webapps") 
}

実際後のGradleのための貨物プラグインを使用してこの機能を置き換えによって展開をrunn

gradle cargoRunLocal
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top