- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 kotlin 的 android 项目,它包含一个库模块,我想将此库上传到 jfrog artifactory。我已成功将 aar 文件上传到 artifactory。现在我想将 library-sources.jar 上传到 artifactory。但是当我执行 gradle 任务 神器发布 ,它会生成两个 pom-default.xml 文件,并随机发布其中一个。
项目 build.gradle
buildscript {
ext.kotlin_version = "1.4.30"
repositories {
maven {
url "http://localhost:8081/artifactory/my_virtual_repo/"
}
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.2"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.15.2"
}
}
allprojects {
repositories {
maven {
url "http://localhost:8081/artifactory/my_virtual_repo/"
}
}
}
库 build.gradle
......
apply plugin: "com.jfrog.artifactory"
apply plugin: "maven-publish"
def MAVEN_LOCAL_PATH = "http://localhost:8081/artifactory"
def GROUP_ID = "com.xxx.artifactlib"
def ARTIFACT_ID = "artifactlib"
def VERSION_NAME = "1.3"
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
}
task sourcesJar(type: Jar) {
group = 'jar'
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
artifacts {
archives sourcesJar
}
publishing {
publications {
mavenJava(MavenPublication) {
groupId = GROUP_ID
artifactId = ARTIFACT_ID
version = VERSION_NAME
artifact tasks.sourcesJar
pom.withXml {
def dependencies = asNode().appendNode("dependencies")
configurations.api.allDependencies.each {
def dependency = dependencies.appendNode("dependency")
print(it.group)
dependency.appendNode("groupId", it.group)
dependency.appendNode("artifactId", it.name)
dependency.appendNode("version", it.version)
}
}
}
}
publications {
aar_pub(MavenPublication) {
groupId = GROUP_ID
artifactId = ARTIFACT_ID
version = VERSION_NAME
artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
pom.withXml {
def dependencies = asNode().appendNode("dependencies")
configurations.api.allDependencies.each {
def dependency = dependencies.appendNode("dependency")
dependency.appendNode("groupId", it.group)
dependency.appendNode("artifactId", it.name)
dependency.appendNode("version", it.version)
}
}
}
}
}
artifactoryPublish {
contextUrl = MAVEN_LOCAL_PATH
publications("mavenJava", "aar_pub")
clientConfig.publisher.repoKey = "my_local_repo"
clientConfig.publisher.username = "xxx"
clientConfig.publisher.password = "xxx"
}
......
aar_pub 的 pom-default.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx.artifactlib</groupId>
<artifactId>artifactlib</artifactId>
<version>1.3</version>
<packaging>aar</packaging>
<dependencies/>
</project>
mavenJava 的 pom-default.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx.artifactlib</groupId>
<artifactId>artifactlib</artifactId>
<version>1.3</version>
<packaging>pom</packaging>
<dependencies/>
</project>
如何上传给定的 pom 文件(如 aar_pub 的 pom-default)?谢谢你。
最佳答案
单个 Publication
包含单个版本的所有 Artifactory 。
您定义了两个相同的 Publications
(好吧,两者都有 aar 和 pom,其中只有一个有源 JAR)并试图同时将它们上传到相同的坐标。
Publication
、 aar
、 jar
等定义一个 pom
。 Publication
中。 publishing {
publications {
mavenJava(MavenPublication) {
groupId = GROUP_ID
artifactId = ARTIFACT_ID
version = VERSION_NAME
artifact tasks.sourcesJar
artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
pom.withXml {
def dependencies = asNode().appendNode("dependencies")
configurations.api.allDependencies.each {
def dependency = dependencies.appendNode("dependency")
print(it.group)
dependency.appendNode("groupId", it.group)
dependency.appendNode("artifactId", it.name)
dependency.appendNode("version", it.version)
}
}
}
}
}
artifactoryPublish {
publications("mavenJava")
}
潜在问题
assemble
之前手动执行
publish
。 (记住每次都这样做。)
maven-publish
插件的 Android Gradle 插件 3.6.0 或更高版本。见
documentation 。这有以下好处:
assemble
之前手动执行 publish
。)withSourcesJar()
的支持之前,您仍然必须处理源 JAR。见 issue 。 // Because the components are created only during the afterEvaluate phase, you must
// configure your publications using the afterEvaluate() lifecycle method.
afterEvaluate {
publishing {
publications {
mavenJava(MavenPublication) {
// Applies the component for the release build variant.
from components.release
artifact tasks.sourcesJar
groupId = GROUP_ID
artifactId = ARTIFACT_ID
version = VERSION_NAME
}
}
}
artifactoryPublish {
// ...
}
}
关于android - Gradle 将sources.jar 和aar 上传到jfrog Artifact 。 artifactoryPublish 会生成两个 pom-default.xml,它会随机推送其中一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66622975/
我在 build.gradle 配置中遇到了一些神奇的行为。我正在尝试为带有子项目的项目启用artifactoryPublish。我有以下结构根--子项目1--子项目2--常见 gradle版本6.0
是否可以在不运行gradle.run任务的情况下执行artifactoryPublish(请参见下文)?我以为可以通过指定task参数来完成此任务,但是插件似乎可以重新添加任务。例如,以下内容: de
是的,我确实需要同时应用“maven”插件和“artifactory”插件。但是,有许多现有的Jenkins作业显式调用了“uploadArchives”(由maven插件提供)。我想在我自己的插件中
我正在尝试使用 gradle 将 Artifactory 发布到 artifactory,但是 gradle 无法识别 artifactoryPublish() 或 artifactory()。我收到
我的 Android Studio 项目可以在发布版和调试版中构建 AAR 或 APK。我想将这些发布到我的 Artifactory 服务器上不同的存储库。 JFrog examples似乎没有涵盖这
我遵循了关于如何设置私有(private) Maven 存储库的指南: (https://inthecheesefactory.com/blog/how-to-setup-private-maven-
我正在尝试使用 gradle + artifactory 插件 + maven-publish 插件将 jar + pom 文件部署到 artifactory。 我尝试了来自其他来源的多种解决方案,例
我有一个带有 kotlin 的 android 项目,它包含一个库模块,我想将此库上传到 jfrog artifactory。我已成功将 aar 文件上传到 artifactory。现在我想将 lib
我是一名优秀的程序员,十分优秀!