如何从Gradle Android项目发布构建信息和工件到Artifactory?

Amith Kumar Mutakari
2023-01-22 11:09

本文解释了如何从Gradle Android项目中发布构件和构建信息,以及build. Gradle、Gradle -wrapper中必须包含的内容。属性文件。

  1. 在客户端机器上执行Git克隆从这里。

  2. 在gradle-android的例子中在这里,在运行gradle publish命令之前,请确保以下设置到位。

以下是你的先决条件$ cat build.gradle

//顶层构建文件,你可以在其中添加所有子项目/模块通用的配置选项。
buildscript {
存储库{
谷歌()
jcenter ()
}
依赖关系{
类路径的com.android.tools.build: gradle: 3.6.3
类路径的org.jfrog.buildinfo: build-info-extractor-gradle: 4.15.2
//注意:不要把你的应用依赖放在这里;他们属于
//在单独的模块构建中。gradle文件
}
}
allprojects {
应用插件:'com.jfrog.artifactory'
应用插件:'maven-publish'
//应用插件:'java'
存储库{
谷歌()
jcenter ()
}
}
artifactoryPublish。Skip = true
项目(“软件”){
artifactoryPublish.dependsOn(“构建”)
出版{
出版物{
应用程序(MavenPublication) {
// from components.java
groupId = group
artifactId = project.getName()
version = currentVersion
工件(" $ buildDir /输出/ apk /释放/ app-release-unsigned.apk”)
}
}
}
artifactoryPublish {
出版物(publishing.publications.app)
}
}
项目(“图书馆”){
artifactoryPublish.dependsOn(“构建”)
出版{
出版物{
aar (MavenPublication) {
// from components.java
groupId = group
artifactId = project.getName()
version = currentVersion
//告诉maven准备生成的"*. "用于发布的文件
工件(" $ buildDir /输出/ aar / $ {project.getName ()} -release.aar”)
}
}
}
artifactoryPublish {
出版物(publishing.publications.aar)
}
}
artifactory {
clientConfig.setIncludeEnvVars(真正的)
clientConfig.info.addEnvironmentProperty(“test.adding.dynVar”,新的日期().toString ())
contextUrl = 'http://localhost:8081/artifactory';
发布{
库{
repoKey = 'lib -snapshot-local' //要发布到的Artifactory存储库密钥
username = "admin" //发布者用户名
password = "password1" //发布者密码
//这是配置Ivy发布的可选部分(当publishIvy = true时)。
艾薇{
ivyLayout = '[organization]/[module]/ivy-[revision].xml'
artifactLayout = '[organization]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]'
mavenCompatible = true //将[organization]布局值中的任何点转换为路径分隔符,类似于Maven的groupid到path转换。如果未指定,则为True

}
}
违约{
//在构建脚本中定义Gradle发布的引用。
//这就是我们如何告诉Artifactory Plugin应该是哪些工件
//发布到Artifactory。
出版物(‘应用’,‘aar)
publishArtifacts = true

//要附加到发布工件的属性。

属性= ['qa.]Level ': 'basic', 'dev.team': 'core']

publishPom = true //将生成的POM文件发布到Artifactory(默认为true)
}
}
}
System.setProperty(“javax.net.ssl.trustStore”、“除”)
System.setProperty(“javax.net.ssl.trustStorePassword”、“changeit”)


         

gradle-wrapper.properties, Gradle版本已更改为6.4。

以下是你的先决条件猫gradle /包装/ gradle-wrapper.properties美元

# 12月03日星期日11:42:26 IST 2017
distributionBase = GRADLE_USER_HOME
distributionPath =包装/ dist
zipStoreBase = GRADLE_USER_HOME
zipStorePath =包装/ dist
distributionUrl = https \: / / services.gradle.org/distributions/gradle all.zip——6.4

在上面的例子中,使用了以下代码:

  • Build . Gradle中的Gradle构建工具v3.6.3
  • JFrog的构建信息提取器v4.15.2在构建中。Gradle,
  • Gradle Build Tool v6.4在Gradle -wrapper.properties中

现在运行artifactoryPublishgradlew (gradlewrapper)
下面是你的$ ./gradlew清理artifactoryPublish命令输出:

>任务:app:lint
在变体版本上运行lint:发现5个问题
在变量调试上运行lint:发现5个问题
写HTML报告到文件:///Users/amithkm/project-examples/gradle-examples/gradle-android-example/app/build/reports/lint-results.html
写XML报告到文件:///Users/amithkm/project-examples/gradle-examples/gradle-android-example/app/build/reports/lint-results.xml
>任务:library:lint
在变量调试上运行lint:发现3个问题
在变体版本上运行lint:发现3个问题
写HTML报告到文件:///Users/amithkm/project-examples/gradle-examples/gradle-android-example/library/build/reports/lint-results.html
写XML报告到文件:///Users/amithkm/project-examples/gradle-examples/gradle-android-example/library/build/reports/lint-results.xml
[pool-65-thread-2]部署工件:http://localhost:8081/artifactory/libs-snapshot-local/gradle-android-example/app/1.0-SNAPSHOT/app-1.0-SNAPSHOT.apk
[pool-65-thread-3]部署工件:http://localhost:8081/artifactory/libs-snapshot-local/gradle-android-example/library/1.0-SNAPSHOT/library-1.0-SNAPSHOT.aar
[pool-65-thread-3]部署工件:http://localhost:8081/artifactory/libs-snapshot-local/gradle-android-example/library/1.0-SNAPSHOT/library-1.0-SNAPSHOT.pom
[pool-65-thread-2]部署工件:http://localhost:8081/artifactory/libs-snapshot-local/gradle-android-example/app/1.0-SNAPSHOT/app-1.0-SNAPSHOT.pom
>任务:artifactoryDeploy
将构建描述符部署到:http://localhost:8081/artifactory/api/build
构建已成功部署。在http://localhost:8081/artifactory/webapp/builds/gradle-android-example/1589806919408下的Artifactory中浏览它
在这个版本中使用了弃用的Gradle特性,使得它与Gradle 7.0不兼容。
使用'——warning-mode all'来显示单个弃用警告。
见https://docs.gradle.org/6.4/userguide/command_line_interface.html秒:command_line_warnings

在90年代建立成功
121个可执行任务:113个已执行,8个最新