![](/img/trans.png)
[英]How do you include a local jar when using mvn assembly:single to build a jar-with-dependencies?
[英]How do you build a .jar that contains external .jar dependencies?
我正在使用Microsoft JDBC Driver 4.1連接到SQL Server。 在Eclipse中,我將.jar文件添加到項目的類路徑中(C:\\ Program Files \\ Microsoft JDBC Driver 4.1 for SQL Server \\ sqljdbc_4.1 \\ enu \\ sqljdbc41.jar)。
我已經將這個.jar添加到了我的項目中名為lib的文件夾中,並嘗試將此.jar作為我的.jar的一部分添加:
repositories {
mavenCentral()
}
dependencies {
compile files('lib/sqljdbc41.jar')
testCompile group: 'junit', name: 'junit', version: '4.+'
}
但是,sqljdbc41.jar不包含在我的.jar中。 我錯過了什么嗎?
您必須創建(應用程序)分發以將庫和應用程序jar打包到一個文件夾中: http : //gradle.org/docs/current/userguide/application_plugin.html
或者,您可以使用像https://github.com/johnrengelman/shadow這樣的插件來創建一個獨立的uberjar。
謝謝chromanoid。 我能夠通過兩種方式解決問題。 首先,我將sqljdbc41.jar放在項目中名為lib的新文件夾中。 解決方案1是創建應用程序分發:
apply plugin:'application'
apply plugin: 'java'
mainClassName = "main.java.application.Main"
repositories {
mavenCentral()
}
dependencies {
runtime files('lib/sqljdbc41.jar')
testCompile group: 'junit', name: 'junit', version: '4.+'
}
然后,您可以使用distZip任務創建分發。 解決方案2是創造一個胖罐。
apply plugin: 'java'
repositories {
mavenCentral()
}
configurations {
provided
compile.extendsFrom provided
}
dependencies {
runtime files('lib/sqljdbc41.jar')
testCompile group: 'junit', name: 'junit', version: '4.+'
}
jar {
dependsOn configurations.runtime
from {
(configurations.runtime - configurations.provided).collect {
it.isDirectory() ? it : zipTree(it)
}
} {
exclude "META-INF/*.SF"
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
}
}
並使用構建任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.