[英]How to create JAR from specific classes and use it with Gradle?
我想在不同的項目中使用的Java類很少。
我現在不想在專門的項目中移動這些類。
所以我想用這些類構建一個JAR,並且能夠在我的其他項目中使用它,所有這些都使用Gradle。
所以這里是我的JAR任務(來源),我把它作為工件發布:
task utilitiesJar(type: Jar) {
baseName = 'utilities'
version = '0.0.1'
includeEmptyDirs = false
from sourceSets.main.allJava
include "**\\common\\exceptions\\**"
include "**\\common\\json\\**"
include "**\\common\\logging\\**"
}
publishing {
publications {
utilities(MavenPublication) {
artifact utilitiesJar
groupId group
artifactId utilitiesJar.baseName
version utilitiesJar.version
}
}
repositories {
maven {
url 'my_URL'
}
}
}
我用另一個項目回來了:
repositories {
mavenCentral()
maven {
url 'my_URL'
}
}
...
compile (...)
...
好像JAR被正確導入了(我可以在IntelliJ的“外部庫”及其所有類中看到它),但我無法使用它。 也許是因為缺少.class文件? 我是Java的初學者,也許我錯過了一些東西。
如何僅使用某些類創建JAR然后使用它?
好的,如評論中所述,我必須包含構建的.class文件,我不能使用這樣的外部.java類。
我的解決方案:
def utilitiesName = '...'
def utilitiesVersion = '0.0.1'
task utilitiesJar(type: Jar, dependsOn: classes) {
baseName = utilitiesName
version = utilitiesVersion
includeEmptyDirs = false
from sourceSets.main.output
include ("**\\common\\exceptions\\**\\*", "**\\common\\json\\**\\*", "**\\common\\logging\\**\\*")
}
task utilitiesSourcesJar(type: Jar, dependsOn: classes) {
baseName = utilitiesName
version = utilitiesVersion
classifier = 'sources'
includeEmptyDirs = false
from sourceSets.main.allJava
include ("**\\common\\exceptions\\**\\*", "**\\common\\json\\**\\*", "**\\common\\logging\\**\\*")
}
publishing {
publications {
utilities(MavenPublication) {
artifact utilitiesJar
artifact utilitiesSourcesJar
groupId group
artifactId utilitiesName
version utilitiesVersion
}
}
repositories {
maven {
url 'myURL'
}
}
}
現在我可以使用它並在IDE中查看類。
PS:這樣做很臟。 創建一個子項目/模塊,這就是如何做到這一點的方式,這就是我所做的最終結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.