我正在編寫一個Java庫,我想用Gradle構建庫,然後從本地測試項目對其進行測試。包含使用Gradle構建的Java庫NoClassDefFoundError
我寧願使用Gradle 3.3來達到我的目的。 該庫應該爲Java5和更高版本構建。
到目前爲止,我build.gradle
看起來是這樣的:
plugins {
id 'jvm-component'
id 'java-lang'
}
repositories {
mavenCentral()
}
model {
components {
main(JvmLibrarySpec) {
sources {
java {
dependencies {
module 'commons-codec:commons-codec:1.10'
module 'org.apache.httpcomponents:httpcore:4.4.6'
module 'org.apache.httpcomponents:httpclient:4.5.3'
}
}
}
api {
exports 'io.simplepush'
}
targetPlatform 'java5'
}
}
}
庫的源代碼位於src/main/java/io/simplepush/Notification.java
並取決於build.gradle
文件中所述的依賴關係。
建立圖書館與./gradlew build
工作正常,並生成build/jars/main/jar/main.jar
。
然而,當我從運行的IntelliJ一個測試項目(包括main.jar
進入測試項目後),我得到以下運行時錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpEntity
。
似乎測試項目不知道我的庫所需的運行時依賴關係。
我不知道什麼是告訴測試項目關於我的庫的依賴關係的正確方法。 我不想要一個包含所有依賴關係的胖罐子。
列出測試項目本身中的所有依賴項也不是一個選項。
最好我希望庫本身告訴測試項目它需要哪些依賴關係。
爲什麼不添加庫測試到庫本身? –
因爲我想了解使用Gradle將庫引入項目的過程。 – tymm
也許這個問題的接受答案將有所幫助:http://stackoverflow.com/questions/24975745/gradle-dependencies-compile-project-by-relative-path – vinegarbin