我迷失在所有这些插件中:(
到目前为止,看起来像这样:
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]
但是,即使它确实如此,它仍然不是我需要的,因为我不知道如何发布一个特定的工件:我可以发布任何东西的唯一方法是{{1但是,这并没有问我要发布哪些工件。它会每次都发布一切吗?
正如你所看到的,我绝望地迷失在这里:( 有人可以告诉我明白了吗?
UPDATE 所以,我从构建中移除了最后一个gradle artifactoryPublish
闭包,现在我没有收到错误,但仍然无法让它做我需要的。
我的神秘现在似乎没有好心情,所以我在当地出版。
artifactory
像以前一样创建一个工件,但是将新的“-util”jar添加到其中。这根本不是我想要的。我需要一个新的,独立的工件,包含该jar文件,以及它自己的一组依赖项。
这里:https://docs.gradle.org/current/userguide/publishing_maven.html#publishing_maven:repositories我发现了一个建议,即“创建的任务被命名为”发布«PUBNAME»PublicationTo«REPONAME»Repository“”。这似乎不是真的,因为gradle publishToMavenLocal
(我可以想到所有的案例变化)说没有这样的任务。 :(
答案 0 :(得分:0)
您是否尝试过使用set me up功能?它适用于所有版本的Artifactory。它应该为您配置gradle项目以使用Artifactory提供一个很好的起点。
特别是对于Gradle,它可以帮助您根据要解析/发布的存储库生成相关配置,定义相关的依赖项以安装jfrog插件等。