簡體   English   中英

將 maven 依賴遷移到 gradle

[英]Migrate maven dependencies to gradle

我從軟件測試開始——使用 Cucumber、Java、gradle。 我嘗試通過“The Cucumber for Java Book”一書來學習這一點

但是我嘗試用 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 做到這一點呢?

我希望有一個人可以幫助我 :)

你的依賴看起來不錯。 只是一個注意事項:考慮使用implementation不是compile因為它可以提高性能。 在此處閱讀有關compile棄用的信息

您還可以將您的屬性放在gradle.properties文件中並在構建腳本中引用它們:

gradle.properties

jettyVersion=9.4.12.v20180830

構建.gradle

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

Jetty 團隊還發布了BOM : — org.eclipse.jetty:jetty-bom:9.4.12.v20180830在你的情況下。 如果您使用相同版本的多個項目,您可以導入 BOM並完全跳過版本:

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 ,請考慮使用 Gradle 的應用程序插件

plugins {
    id 'application'
}

mainClassName = 'nicebank.AtmServer'

這樣你就不需要手動創建“exec”任務,你將從插件中獲得一個( run )。 作為獎勵,您將獲得兩個“分發”任務,這些任務將使用您的應用程序創建一個可供分發的存檔: distZipdistTar

正如我在評論中所說的,jetty-webapp 的依賴似乎沒問題,但您應該使用implementation而不是compilecompile已被棄用,請參閱Java 依賴配置):

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

或者

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

對於 Gradle 中的“maven exec:java”等價物,您可以使用Gradle JavaExec 任務類型:嘗試在您的構建中定義一個任務,如下所示:

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

    main = 'nicebank.AtmServer'

}

(未測試,您可能必須對其進行調整),並使用

gradle runApp

您也可以使用Gretty插件來運行您的 web 應用程序(在這種情況下無需定義您自己的 JavaExec 任務),如此此處所述

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

然后,您可以使用以下命令運行應用程序:

gradle appRun

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM