【发布时间】:2016-11-27 01:03:51
【问题描述】:
我迷失在所有这些插件中:(
到目前为止,我所拥有的看起来像这样:
artifactory {
contextUrl = artifactoryUrl
publish {
repository {
repoKey = project.repo
username = artifactoryUser
password = artifactoryPassword
maven = true
defaults {
publications('mavenJava')
}
}
}
version = "${majorVersion}${buildNumber}${snapshot}"
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact sourceJar {
classifier = 'sources'
}
}
}
}
很抱歉,我确实是自己写的,但主要是通过从网上找到的各种示例中复制和粘贴内容,所以我不确定这实际上在做什么:(
令人惊讶的是,这行得通:我可以做到gradle artifactoryPublish,并将一个 pom 文件和两个 jar(类和源)上传到 artifactory。
但是,我需要修改它,以便我可以将项目的子集发布为不同的工件,并且只包含它需要的依赖项。 我设法构建了一个 jar 文件:
task utilJar(type: Jar) {
from sourceSets.main.output.classesDir
include '**/util/*.class'
baseName 'basic-util'
}
我还定义了一个包含依赖子集的配置:
configurations {
util
}
dependencies {
util "org.apache.commons:commons-lang3:3.4"
util "com.google.guava:guava:18.0"
}
artifacts {
util utilJar
}
这就是我卡住的地方。我如何发布这个新的工件?
我尝试了同样的策略:
publishing {
publications {
mavenUtil(MavenPublication) {
from components.java
artifact utilJar {
classifier = 'util'
}
}
}
}
artifactory {
defaults {
publications('mavenUtil')
}
}
(这是在一个子项目中,所以我需要它是增量的)
这不起作用:
Could not find method defaults() for arguments [build_8axxghkylu3559p5lal6spy1u$_run_closure7$_closure11@38abcbd4]
但是,即使确实如此,它仍然不是我所需要的,因为我不知道如何发布特定的工件:我可以发布任何东西的唯一方法是 gradle artifactoryPublish ,但这并没有问我要发布哪些工件。它会每次都发布所有内容吗?
如你所见,我在这里彻底迷路了 :( 有线索的人可以给我指点灯吗?
更新因此,我从构建中删除了最后一个 artifactory 闭包,现在我没有收到错误,但仍然无法让它做我需要的事情。
我的神器现在好像心情不太好,所以在本地发布。
gradle publishToMavenLocal 像以前一样创建单个工件,但将我的新“-util”jar 添加到它。这根本不是我想要的。我需要一个新的、单独的工件,带有那个 jar 文件和它自己的一组依赖项。
在这里:https://docs.gradle.org/current/userguide/publishing_maven.html#publishing_maven:repositories 我发现了一个建议,即“创建的任务被命名为“publish«PUBNAME»PublicationTo«REPONAME»Repository”。这似乎不是真的,因为gradle publishUtilMavenPublicationToMavenLocalRepository(我能想到的所有案例变化)说没有这样的任务。 :(
【问题讨论】:
-
尝试
gradle tasks --all查看所有可用任务
标签: gradle publish artifactory