- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有我的 uploadArhives
到 Maven 存储库 .aar
发布。
但我必须始终从控制台运行 gradlew uploadArhives
,如何编写代码以使其在每次构建或发布构建时调用?
uploadArchives {
repositories {
mavenDeployer {
def credentials = [
userName: NEXUS_USERNAME,
password: NEXUS_PASSWORD
]
repository(url: MAVEN_REPO_URL, authentication: credentials)
pom.artifactId = 'aaa'
pom.version = version
pom.packaging = 'aar'
pom.groupId = 'bbb'
}
}
}
编辑:
如我所想,我们可以定义函数:
def uploadToMaven = {
uploadArchives
}
但是如何在每次构建时执行它呢?
最佳答案
我有一个包含许多模块和一个主应用程序的复杂项目。我在其中两个模块上添加了“uploadArchives”(因为是 android 库)。通过这种方式,我可以在 Maven 上发布我的库,只需从我的主应用程序运行任务 uploadArchives,或者使用 gradle 并调用此任务“uploadArchives”。
您可以在您的 build.gradle(您要发布的库的)“build.finalizedBy(uploadArchives)”中使用它。
例如:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
minSdkVersion 17
targetSdkVersion 23
versionCode 2
versionName "2.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
lintOptions {
abortOnError false
}
}
build.finalizedBy(uploadArchives)
task wrapper(type: Wrapper) {
gradleVersion = "2.8"
}
dependencies {
compile project(':spfshared')
compile 'com.google.code.gson:gson:2.4'
}
//task for Sonatype Nexus OSS
uploadArchives {
repositories {
mavenDeployer {
repository(
url: "${nexusUrl}/content/repositories/releases") {
authentication(userName: nexusUsername, password: nexusPassword)
}
snapshotRepository(
url: "${nexusUrl}/content/repositories/snapshots") {
authentication(userName: nexusUsername, password: nexusPassword)
}
pom.version = "2.0.0.1"
pom.artifactId = "spflib"
pom.groupId = "it.polimi.spf"
}
}
}
每次构建后,uploadArchives 将开始。
我尝试了这个解决方案并且它有效。
我还尝试了一些使用“build.dependsOn myTaskName”的解决方案,但没有成功。如果您愿意,可以尝试,但在我的 AndroidStudio 上,第一个解决方案有效。
PS:我使用命令“gradlew -q build”测试了我的解决方案,还专门从我在 Android Studio 中的主模块(这是我的主要应用程序)中运行任务“build”。
如果您想在每次发布时调用“uploadArchives”,只需将“build”替换为发布任务即可。
更新:我也尝试了这些代码行:
defaultTasks 'uploadArchives'
clean.finalizedBy(uploadArchives)
assembleDebug.finalizedBy(uploadArchives)
assembleRelease.finalizedBy(uploadArchives)
但有时他们多次调用“uploadArchives”,我认为这不是一个好主意。
你问的问题很有挑战性...我试了整整一个小时:)
关于构建时的Android gradle uploadArchives,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36355201/
我的 gradle 脚本中有一个上传任务: uploadArchives { repositories { mavenDeployer { reposi
我有我的 uploadArhives 到 Maven 存储库 .aar 发布。 但我必须始终从控制台运行 gradlew uploadArhives,如何编写代码以使其在每次构建或发布构建时调用? u
我创建了一个 gradle 项目,一切正常,但是当我尝试上传到我的 Maven 存储库时,我收到以下 Gradle 错误: FAILURE: Build failed with an exceptio
我正在开发一个带有一组可发布库的仓库,每个库都在一个模块中。这个想法是每个库都应该能够单独发布,即 ./gradlew upload . 目前在每个模块中,我都有以下代码来发布它: uploadArc
我认为uploadArchives是一个由java插件提供的任务。在我的 build.gradle 中,我使用 java 插件: apply plugin: 'java' 但是,如果我在命令行上调用
我有一个包含多种产品口味的应用程序。我使用 maven 插件和 uploadArchives 任务将我的 apk 上传到 nexus,使用这个: https://raw.githubuserconte
我的 build.gradle 中有以下内容: afterEvaluate { project -> uploadArchives { repositories { maven
我只是将我们的 nexus 存储库迁移到新服务器并更新 build.gradle 以指向该服务器。 uploadArchives { repositories.mavenDeployer {
我很困惑为什么 Gradle 的 uploadArchive 会从其他配置上传 Artifact 。我的理解是,当您声明配置时,它将为您获取上传任务,并且在调用时它将上传分配给其配置的 Artifac
我将 gradle 版本更新为 7.0.4 ( com.android.tools.build:gradle:7.0.4 ) 现在在我的一些模块中,我正在解决 problem与 maven 。 所以我
我有一个场景,我需要在 init.gradle 文件中捕获以下详细信息。 我们可以获得任务的所有事件吗? UploadArchive 和发布任务的输入参数,其中 repo 是要上传的工件,所有 GAV
我有一个 build.gradle 文件要在私有(private) Maven 存储库上构建和上传一个 Android 库 (.aar) 脚本工作正常,但问题是,它将我的两个 buildType 上传
我的 gradle.build 文件看起来像这样 apply plugin: 'java-library' apply plugin: 'maven' dependencies { imple
我的 Android 项目刚刚从 Eclipse 和 Maven 切换到 Android Studio 和 Gradle。 现在我希望我的 Jenkins 服务器能够构建发布版本并将其上传到我的自托管
我使用此gradle uploadArchives 将我的一个android 开源库的 Artifact (jar、源代码和javadoc)上传到oss sonatype nexus reposito
我想将我的库切换到 Gradle Script Kotlin,但我找不到配置 uploadArchive 任务的方法。 这是我想翻译的 groovy kotlin 脚本: uploadArchiv
我是一名优秀的程序员,十分优秀!