Грейд: Скопируйте войну в каталог Tomcat

StackOverflow https://stackoverflow.com/questions/4209847

  •  25-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь написать задачу Ricely, которые копируют файлы войны в мой локальный экземпляр Tomcat:

Это не работает, и я не уверен, как отлаживать это:

 task deploylocal() << {
    println "Copy from ${buildDir}\\libs into ${tomcatHome}/webapps"
    copy{
      from "${buildDir}\\libs"
      into "${tomcatHome}/webapps"
      include '*.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. Моя установка предотвращает меня использовать / изменить выброс из варианта War War & Tomcat.

Я лично люблю следующий аромат (скопирован из моего build.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
    }
}

- Вы вызываете различные варианты, которые вы включаете в задачу «TOM» из командной строки -

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

Это может потенциально расти дальше, так как добавляю больше команд / вариантов, связанных с Tomcat. Несколько указателей:

  1. Переместите местоположение и т. Д. Для Gradle.properties, чтобы он мог работать в разных средах.
  2. Опрос ваш порт Tomcat Server в тонкую настройку параметров и MSG.
  3. Переместите к плагину / коду задач, который можно использовать повторно.

Эта ограниченная версия работает для меня прямо сейчас :-)

Вы могли бы дать Грагский плагин Грейл выстрел. Он позволяет развертывать файл War на локальный, а также удаленный Tomcat.

Пожалуйста, убедитесь, что архив войны становится в комплекте раньше deploylocal выполняется. Может быть, вы можете определить зависимость:

task deploylocal(dependsOn: build) << {

NB Есть имущество конвенции в плагине Java с именем libsDir. Отказ Это позволяет ссылаться на каталог Build / Libs лучше:

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

Во-первых, пытаясь отладить. Проверьте порядок выполнения задач; Посмотрите, будет ли это запустить после того, как файл War производится. Кроме того, говорит ли он или нет в актуальном состоянии.

Проблема может быть отсутствие каких-либо зависимостей между этой задачей и выходом, которую вы хотите скопировать.

Попробуйте заменить эту общую задачу с экземпляром задачи копирования и сделать его в зависимости от файла войны, который вы пытаетесь скопировать.

Что-то вроде этого:

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

На самом деле позже заменил эту функциональность с помощью грузового плагина для Gradle и разверните развертывание

gradle cargoRunLocal
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top