Миграция зависимостей maven в gradle - PullRequest
0 голосов
/ 13 ноября 2018

Я начинаю с тестирования программного обеспечения - использую Cucumber, Java, gradle. Я пытаюсь узнать это с книгой "Книга Огурец на Яве"

Но я пытаюсь сделать это с помощью gradle вместо maven ... Но теперь у меня есть некоторые проблемы ... Я придерживаюсь на странице 149. Я должен дать так зависимости:

<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId>
<version>${jetty.version}</version>
</dependency>

Я пытаюсь "перевести" это на gradle

dependencies {
     testCompile group: 'junit', name: 'junit', version: '4.12'
     testCompile 'io.cucumber:cucumber-java:2.4.0'
     testCompile 'io.cucumber:cucumber-junit:2.4.0'
     testCompile group: 'info.cukes', name: 'cucumber-picocontainer', version: '1.2.5'
     compile group: 'org.eclipse.jetty', name: 'jetty-webapp', version: '9.4.12.v20180830'
}

Это правильно? группа компиляции: 'org.eclipse.jetty', имя: 'jetty-webapp', версия: '9.4.12.v20180830'

После этого мне нужно бежать:

mvn exec:java -Dexec.mainClass="nicebank.AtmServer"

Но как я могу сделать это с Gradle?

Надеюсь, кто-нибудь может мне помочь:)

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Ваша зависимость выглядит хорошо.Только одно замечание: рассмотрите возможность использования implementation над compile, поскольку это повышает производительность.Прочитайте о compile устаревании здесь .

Вы также можете поместить свои свойства в файл gradle.properties и ссылаться на них в скрипте сборки:

gradle.свойства :

jettyVersion=9.4.12.v20180830

build.gradle :

implementation group: 'org.eclipse.jetty', name: 'jetty-webapp', version: jettyVersion

Также опубликована команда Jetty спецификации : - org.eclipse.jetty:jetty-bom:9.4.12.v20180830 в вашем случае.Если вы используете несколько проектов одной и той же версии, вы можете импортировать спецификацию и полностью пропустить версию:

dependencies {
    implementation 'org.eclipse.jetty:jetty-bom:9.4.12.v20180830'
    implementation 'org.eclipse.jetty:jetty-webapp'
    implementation 'org.eclipse.jetty:jetty-runner'
}

Что касается задачи "exec": если у вас только один основной классв своем проекте, например nicebank.AtmServer, рассмотрите возможность использования Application Plugin от Gradle :

plugins {
    id 'application'
}

mainClassName = 'nicebank.AtmServer'

Таким образом, вам не нужно создавать задачу exec вручную, вы получите одну(run) из плагина.В качестве бонуса вы получите две «распределительные» задачи, которые создадут готовый к распространению архив с вашим приложением: distZip и distTar.

0 голосов
/ 13 ноября 2018

Как я уже сказал в своем комментарии, зависимость для jetty-webapp выглядит нормально, но вы должны использовать implementation вместо compile (compile устарело, см. Конфигурации зависимостей Java ):

implementation group: 'org.eclipse.jetty', name: 'jetty-webapp', version: '9.4.12.v20180830'

или

implementation "org.eclipse.jetty:jetty-webapp:9.4.12.v20180830"

Для эквивалента "maven exec: java" в Gradle можно использовать тип задачи JavaExec Gradle : попытаться определитьЗадача в вашей сборке выглядит следующим образом:

task runApp(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath

    main = 'nicebank.AtmServer'

}

(не проверено, вам нужно адаптировать ее), и запустите ее с

gradle runApp

Вы можете альтернативно использовать Gretty плагин для запуска вашего веб-приложения (в этом случае не нужно определять собственную задачу JavaExec), как описано здесь и здесь :

plugins{
    // your existing plugins   
    id "org.gretty" version "2.2.0"
}

YouЗатем можно запустить приложение с:

gradle appRun
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...