如何在没有阴影pom的情况下发布Gradle阴影jar
我使用shadowjar插件()创建一个额外的jar文件,其中包含我的所有依赖项。我还希望保留默认生成的jar,它只有我的代码和资源。在发布jar之前,这是非常简单和直接的 由于我的shadowjar中包含了所有的dep,所以就发布而言,它的pom文件并不是我的优先事项。但是,如果我遵循shadowJar插件文档中的说明() 最后,我将两个不同的pom文件(一个用于常规jar文件,另一个用于影子jar)发布到相同的URL,其中一个覆盖另一个。此行为导致客户下载默认jar,但pom文件中没有任何依赖项如何在没有阴影pom的情况下发布Gradle阴影jar,gradle,artifactory,shadow,publishing,shadowjar,Gradle,Artifactory,Shadow,Publishing,Shadowjar,我使用shadowjar插件()创建一个额外的jar文件,其中包含我的所有依赖项。我还希望保留默认生成的jar,它只有我的代码和资源。在发布jar之前,这是非常简单和直接的 由于我的shadowjar中包含了所有的dep,所以就发布而言,它的pom文件并不是我的优先事项。但是,如果我遵循shadowJar插件文档中的说明() 最后,我将两个不同的pom文件(一个用于常规jar文件,另一个用于影子jar)发布到相同的URL,其中一个覆盖另一个。此行为导致客户下载默认jar,但pom文件中没有任何依
我尝试了很多方法来禁用shadowJar pom文件,但没有成功。如何让它工作?最终我忽略了插件文档中的说明,发布了shadow jar,就像发布我的源jar一样: 对单个项目执行此操作的最简单方法是:
publishing {
publications {
Library(MavenPublication) {
from project.components.java
artifact tasks.sourceJar
artifact tasks.shadowJar
}
}
}
如果您有多个项目(并非所有项目都应用了shadowJar插件),并且希望在根项目中添加此逻辑,则可以执行以下操作:
subprojects {
afterEvaluate {
publishing {
publications {
Library(MavenPublication) {
from project.components.java
artifact tasks.sourceJar
if (project.tasks.findByName("shadowJar") != null) {
artifact tasks.shadowJar
}
}
}
}
}
}
subprojects {
afterEvaluate {
publishing {
publications {
Library(MavenPublication) {
from project.components.java
artifact tasks.sourceJar
if (project.tasks.findByName("shadowJar") != null) {
artifact tasks.shadowJar
}
}
}
}
}
}