簡體   English   中英

如何使用Gradle在我的JAR中包含單個依賴項?

[英]How do I include a single dependency in my JAR with Gradle?

我從Gradle開始,我想知道如何在我的JAR中包含單個依賴項(在我的情況下是TeamSpeak API),以便它可以在運行時使用。

這是我的build.gradle的一部分:

apply plugin: 'java'

compileJava {
    sourceCompatibility = '1.8'
    options.encoding = 'UTF-8'
}

jar {
    manifest {
        attributes 'Class-Path': '.......'
    }

    from {
        * What should I put here ? *
    }
}

dependencies {
    compile group: 'org.hibernate', name: 'hibernate-core', version: '4.3.7.Final'
    compile group: 'org.spigotmc', name: 'spigot', version: '1.8-R0.1-RELEASE'
    // Many other dependencies, all available at runtime...

    // This one isn't. So I need to include it into my JAR :
    compile group: 'com.github.theholywaffle', name: 'teamspeak3-api', version: '+'

}

謝謝你的幫助 :)

最簡單的方法是從要包含的依賴項的單獨配置開始。 我知道您只詢問了一個jar,但如果您為新配置添加更多依賴項,此解決方案將起作用。 Maven有一個眾所周知的名稱叫做provided這種東西,所以我們將使用它。

   configurations {
      provided
      // Make compile extend from our provided configuration so that things added to bundled end up on the compile classpath
      compile.extendsFrom(provided)
   }

   dependencies {
      provided group: 'org.spigotmc', name: 'spigot', version: '1.8-R0.1-RELEASE'
   }

   jar {
       // Include all of the jars from the bundled configuration in our jar
       from configurations.provided.asFileTree.files.collect { zipTree(it) }
   }

通過provided作為配置的名稱也很重要,因為當瓶子被發布后,您在有任何依賴性provided的配置將顯示為provided在獲取與發布的JAR pom.xml中。 Maven依賴解析器不會提取所provided依賴項,並且jar的用戶不會在類路徑上以類的重復副本結束。 請參閱Maven依賴范圍

暫無
暫無

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

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