如何从一个Gradle Android项目发布构建信息和工件到Artifactory?
这篇文章解释了如何从Gradle Android项目中发布工件和构建信息,以及你需要在build. Gradle, Gradle -wrapper中包含的强制性内容。属性文件。
以下是你的先决条件$ 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。跳过= 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准备生成的“*.”Aar”用于发布的文件
工件(" $ buildDir /输出/ aar / $ {project.getName ()} -release.aar”)
}
}
}
artifactoryPublish {
出版物(publishing.publications.aar)
}
}
artifactory {
clientConfig.setIncludeEnvVars(真正的)
clientConfig.info.addEnvironmentProperty(“test.adding.dynVar”,新的日期().toString ())
contextturl = 'http://localhost:8081/artifactory';
发布{
库{
repoKey = 'lib -snapshot-local' //要发布到的Artifactory存储库密钥
username = "admin" //发布者用户名
password = "password1" //发布者密码
//这是配置Ivy发布的可选部分(当publishIvy = true时)
艾薇{
ivy layout = '[organization]/[module]/ivy-[revision].xml'
artifactLayout = '[organization]/[module]/[revision]/[module]-[revision](-[classifier]).[ext]'
mavenCompatible = true //将[组织]布局值中的任何点转换为路径分隔符,类似于Maven的groupid到路径的转换。如果未指定为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美元:
2017年12月03日11:42:26
distributionBase = GRADLE_USER_HOME
distributionPath =包装/ dist
zipStoreBase = GRADLE_USER_HOME
zipStorePath =包装/ dist
distributionUrl = https \: / / services.gradle.org/distributions/gradle all.zip——6.4
在上面的例子中,使用了以下内容:
- Gradle Build Tool v3.6.3
- JFrog的Build Info Extractor v4.15.2Gradle,
- Gradle Build Tool v6.4在Gradle -wrapper.properties
现在运行artifactoryPublishgradlew (gradlewrapper)
以下将是你的$ ./gradlew清洁artifactoryPublish命令输出:
>任务:app:lint
在版本发布上运行棉绒:发现5个问题
在变种调试上运行棉绒:发现5个问题
将HTML报告写入文件:///Users/amithkm/project-examples/gradl -examples/gradl -android-example/app/build/reports/lint-results.html
写入XML报告到文件:///Users/amithkm/project-examples/gradl -examples/gradl -android-example/app/build/reports/lint-results.xml
>任务:library:lint
在变种调试上运行棉绒:发现3个问题
在版本发布上运行棉绒:发现3个问题
将HTML报告写入文件:///Users/amithkm/project-examples/gradl -examples/gradl -android-example/library/build/reports/lint-results.html
写入XML报告到文件:///Users/amithkm/project-examples/gradl -examples/gradl -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
构建已成功部署。在Artifactory http://localhost:8081/artifactory/webapp/builds/gradle-android-example/1589806919408下浏览它
在此版本中使用了已弃用的Gradle特性,使其与Gradle 7.0不兼容。
使用'——warning-mode all'显示单个弃用警告。
见https://docs.gradle.org/6.4/userguide/command_line_interface.html秒:command_line_warnings
在9秒内建立成功
121个可操作任务:113个已执行,8个最新
