簡體   English   中英

如何使用本地 JUnit Jar 從 Gradle 而不是 Maven 中央?

[英]How to use local JUnit Jar from Gradle instead of Maven Central?

我正在嘗試在沒有 inte.net 訪問權限但有 SSH 訪問權限並且可以同步我的本地文件等的環境中運行我的 JUnit 測試。

我想我可以將我的 JUnit jar 添加到項目中,但這似乎不起作用(而且它似乎沒有下載到我的 Maven 緩存中)。

理想情況下,我可以在具有 Inte.net 訪問權限的開發機器上執行此操作——編譯所有內容並同步它

gradle assemble testClasses

簡單例子

從這個https://github.com/spring-guides/gs-rest-service開始編輯 build.gradle 添加行以在本地抓取 Jars

將 JUnit jar 添加到“libs”文件夾,即 mkdir libs; 光盤庫; wget https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-engine/5.7.2/junit-jupiter-engine-5.7.2.jar

plugins {
    id 'org.springframework.boot' version '2.5.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    testCompile fileTree(dir: 'libs', include: '*.jar')
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

test {
    useJUnitPlatform()
}

但它不會在“libs”中尋找 JUnit jar - 它仍在嘗試從 Maven Central 獲取:

gradle 清潔測試

任務:測試失敗

失敗:構建失敗,出現異常。

  • 出了什么問題:任務 ':test' 執行失敗。

無法下載 junit-jupiter-engine-5.7.2.jar (org.junit.jupiter:junit-jupiter-engine:5.7.2) 無法獲取資源 'https://repo.maven.apache.org/maven2/org/junit/木星/junit-jupiter-engine/5.7.2/junit-jupiter-engine-5.7.2.jar'。 > 無法獲取“https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-engine/5.7.2/junit-jupiter-engine-5.7.2.jar”。 > repo.maven.apache.org:名稱解析暫時失敗

  • 嘗試:使用 --stacktrace 選項運行以獲取堆棧跟蹤。 使用 --info 或 --debug 選項運行以獲取更多日志 output。使用 --scan 運行以獲取完整的見解。

  • https://help.gradle.org獲得更多幫助

此版本中使用了已棄用的 Gradle 功能,使其與 Gradle 7.0 不兼容。 使用“--warning-mode all”來顯示各個棄用警告。 請參閱https://docs.gradle.org/6.8.3/userguide/command_line_interface.html#sec:command_line_warnings

在 4 秒內構建失敗 4 個可操作任務:4 個已執行

更新

Gradle 期望文件夾格式是什么?

這是我試過的

將我的 settings.gradle 更改為此

pluginManagement {
    repositories {
        maven {
            url './libs'
        }
    }
}

將所有 jars 復制到我的 libs 文件夾

尋找。 -名稱“ spring 2.5.2*jar”| xargs cp -t ~/complete/libs/

為了好玩,復制了整個文件夾 cp -rf ~/.gradle/caches/modules-2/files-2.1/ ~/complete/libs/

但是還是找不到Spring插件?

我的 libs 文件夾現在看起來像這樣

$ ls libs
6.8.3                       org.assertj
ch.qos.logback                  org.codehaus.groovy
com.datastax.oss                org.eclipse.ee4j
com.fasterxml                   org.eclipse.jetty
com.fasterxml.jackson               org.glassfish.jersey
com.fasterxml.jackson.core          org.hamcrest
com.fasterxml.jackson.datatype          org.infinispan
com.fasterxml.jackson.module            org.jboss
com.google.code.findbugs            org.jetbrains.kotlin
com.jayway.jsonpath             org.jetbrains.kotlinx
com.oracle.database.jdbc            org.junit
com.sun.activation              org.junit.jupiter
com.vaadin.external.google          org.junit.platform
commons-codec                   org.mockito
commons-logging                 org.objenesis
dependency-management-plugin-1.0.11.RELEASE.jar org.opentest4j
files-2.1                   org.ow2
io.dropwizard.metrics               org.ow2.asm
io.micrometer                   org.skyscreamer
io.netty                    org.slf4j
io.projectreactor               org.sonatype.oss
io.prometheus                   org.springframework
io.r2dbc                    org.springframework.boot
io.rsocket                  org.springframework.data
io.spring.dependency-management         org.springframework.integration
io.spring.gradle                org.springframework.security
jakarta.activation              org.springframework.session
jakarta.annotation              org.tomlj
jakarta.xml.bind                org.xmlunit
jars-8                      org.yaml
journal-1                   spring-boot-2.5.2.jar
junit-jupiter-engine-5.7.2.jar          spring-boot-autoconfigure-2.5.2.jar
modules-2                   spring-boot-buildpack-platform-2.5.2.jar
net.bytebuddy                   spring-boot-gradle-plugin-2.5.2.jar
net.java.dev.jna                spring-boot-loader-tools-2.5.2.jar
net.minidev                 spring-boot-starter-2.5.2.jar
org.antlr                   spring-boot-starter-json-2.5.2.jar
org.apache                  spring-boot-starter-logging-2.5.2.jar
org.apache.commons              spring-boot-starter-test-2.5.2.jar
org.apache.httpcomponents           spring-boot-starter-tomcat-2.5.2.jar
org.apache.logging              spring-boot-starter-web-2.5.2.jar
org.apache.logging.log4j            spring-boot-test-2.5.2.jar
org.apache.tomcat.embed             spring-boot-test-autoconfigure-2.5.2.jar
org.apiguardian                 transforms-3

$ gradle 測試

失敗:構建失敗,出現異常。

  • 其中:構建文件“/Users/dennch3/tsmec/modules/e2etests/complete/build.gradle”行:2

  • 出了什么問題:在以下任何來源中都找不到插件 [id: 'org.springframework.boot', version: '2.5.2']:

  • Gradle 核心插件(插件不在“org.gradle”命名空間中)
  • 插件存儲庫(無法解析插件工件'org.springframework.boot:org.springframework.boot.gradle.plugin:2.5.2')在以下存儲庫中搜索:maven(文件:~/complete/libs/)

您的問題不是 junit,要運行 gradle,您需要訪問依賴項的 maven 存儲庫和 gradle 插件存儲庫(您有 spring 啟動)

您選擇了 mavencentral(),但無法訪問 inte.net 這將不起作用,您應該可以訪問 maven 和 Gradle 插件的本地存儲庫。

如果你的libs已經有spring jars,那么去掉spring相關的依賴(第3,4行)

也從 testCompile 更改為 testImplementation(第 2 行)

PS - 您可能還需要插件來添加本地存儲庫,請參閱https://docs.gradle.org/current/userguide/plugins.html#sec:custom_plugin_repositories

暫無
暫無

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

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