gpt4 book ai didi

java - 如何从特定类创建 JAR 并将其与 Gradle 一起使用?

转载 作者:行者123 更新时间:2023-11-30 10:03:55 25 4
gpt4 key购买 nike

我想在不同的项目中使用几个 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:这样做很脏。创建一个子项目/一个模块,这就是如何做的方式,这就是我最终所做的。

关于java - 如何从特定类创建 JAR 并将其与 Gradle 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56150338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com