我想在不同项目中使用的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,然后使用它?
答案 0 :(得分:0)
好吧,正如评论中所说,我必须包括构建的.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:用这种方式做是很脏的。创建一个子项目/一个模块,这只是方法,最后就是我所做的。