尝试将旧项目导入 android studio 时,Gradle refresh failed 错误。如何解决这个问题?谢谢。
错误:从 /tmp/gradle7963227675482339513.bin 中的二进制存储读取数据时出现问题(存在:true)
android gradle-release-plugin android-studio build.gradle android-gradle-plugin
我正在创建gradle构建作为新的gradle用户,但我过去曾与maven合作过.
我正在尝试重现maven发布插件的操作:
如你所见,我正在使用:
我试图用这两个插件实现我的目标:
命令行:gradle release
部署到Nexus的Maven Publish插件:
命令行:gradle发布
任何想法如何生成一个版本并一次性自动部署到Nexus?
下面是我的build.gradle:
plugins {
id 'net.researchgate.release' version '2.3.4'
}
apply plugin: 'maven-publish'
/*------------------------
----- PUBLISH PLUGIN -----
--------------------------
https://docs.gradle.org/current/userguide/publishing_maven.html
--------------------------*/
publishing {
publications {
maven(MavenPublication) {
groupId mavenGroup
artifactId mavenArtifact
version version
from components.java
}
}
repositories {
maven {
if(project.version.endsWith('-SNAPSHOT')) {
url "${nexusUrl}/content/repositories/repo-snapshots"
} else {
url "${nexusUrl}/content/repositories/repo-releases"
}
credentials …Run Code Online (Sandbox Code Playgroud) 目前我们正在使用axion-release-plugin来控制我们的发布过程.现在我们想放弃SNAPSHOT并在我们的发布过程中引入内部版本号.这样我们就可以实现CI.
基本上目前我们使用的是1.0.0-SNAPSHOT版本,现在我们需要一些来自Jenkins的1.0.0-BUILDNUMBER或1.0.BUILDNUMBER.
请提供我们可以使用gradle的任何解决方案或插件.
在Maven中,发布过程没有问题.由于我被迫使用带有Gradle的Android Studio,我希望实现与Eclipse和Maven相同的行为.我找到了一些非常好的Maven-like发布插件(https://github.com/researchgate/gradle-release),它几乎按预期工作,但它没有上传发布apk,虽然它正确创建了apk /app/build/outputs/apk和标记我的SVN存储库中的源代码.release文件夹仍为空.我甚至不确定这个插件是否可以做到这一点,因为它没有很好的文档,但我想我需要告诉这个插件要上传什么以及在哪里找到它.只有一个afterReleaseBuild.dependsOn uploadArchives.这是什么意思,我必须覆盖这个uploadArchives方法或Gradle中的这个意思?它似乎是内置的东西,因为如果我在我的脚本中编写并运行,Gradle构建不会抱怨gradlew release.显然插件已经知道存储库并且可以通过ssh连接,否则它无法创建标记,但似乎它不知道要上传什么,发布文件夹保持空白.与此同时,我试图通过许多其他Gradle尝试来解决这个问题,例如使用Maven插件,但后来我遇到SSH证书问题而没有解决方案,即使它有效,也不会是一个好的解决方案,因为我不喜欢不想创建pom.xml文件等,这本来就是一种解决方法.
目标是发布过程应该自动在svn存储库的releases文件夹中创建一个文件夹,该文件夹的名称与当前版本相同(因为它已在tags文件夹中工作,例如1.0.0)并将已发布的apk复制到已经重命名的apk中Gradle的myapp-app-1.0.0-release.apk,因为这是本地输出文件夹中包的名称.
这是我当前的gradle脚本,它可以在输出文件夹中生成release apk但不会将其上传到svn:
apply plugin: 'com.android.application'
apply plugin: 'net.researchgate.release'
def keystorePropertiesFile = rootProject.file("/home/myuser/.android/keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
lintOptions {
//TODO remove this or set to true
abortOnError false
}
signingConfigs {
myapp_release_config {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
compileSdkVersion 24
buildToolsVersion "24.0.1"
packagingOptions {
exclude 'META-INF/ASL2.0'
}
defaultConfig {
applicationId "com.mydomain.myapp"
minSdkVersion 9
targetSdkVersion 24
versionCode …Run Code Online (Sandbox Code Playgroud) 我试图通过gradle创建多个启动脚本文件.但不知何故,一个特定的启动脚本文件正在重复.
startScripts.enabled = false
run.enabled = false
def createScript(project, mainClass, name) {
project.tasks.create(name: name, type: CreateStartScripts) {
outputDir = new File(project.buildDir, 'scripts')
mainClassName = mainClass
applicationName = name
classpath = jar.outputs.files + project.configurations.runtime
doLast {
def windowsScriptFile = file getWindowsScript()
def unixScriptFile = file getUnixScript()
windowsScriptFile.text = windowsScriptFile.text.replace('%APP_HOME%\\lib\\conf', '%APP_HOME%\\conf')
unixScriptFile.text = unixScriptFile.text.replace('$APP_HOME/lib/conf', '$APP_HOME/conf')
}
}
project.tasks[name].dependsOn(project.jar)
project.applicationDistribution.with {
into("bin") {
from(project.tasks[name])
fileMode = 0755
}
}
}
// Call this for each Main class you want to expose with an …Run Code Online (Sandbox Code Playgroud) 使用 Jenkins 管道,我将存储库 URL 从 http 更改为 ssh git 访问。这样做之后,这项工作不再起作用(在此之前一切正常)。
在日志下方:
:xxxxxx:checkUpdateNeeded
Running [git, remote, update] produced an error: [Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
error: Could not fetch origin]
:xxxxxx:checkUpdateNeeded FAILED
:release FAILED
Release process failed, reverting back any changes made by Release Plugin.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':checkUpdateNeeded'.
> Failed to …Run Code Online (Sandbox Code Playgroud) 我正在将我的应用程序从maven转换为gradle,我正在寻找maven-release-plugin替代gradle.
我需要的插件是:
我想,最受欢迎的是Gradle Release Plugin(https://github.com/researchgate/gradle-release).它工作正常,但是,它将版本存储在单独的文件"gradle.properties"中.我需要将此版本存储在"build.gradle"文件中(就像pom.xml中的版本一样).
我还测试了以下插件,但它们也没有在build.gradle中存储版本:
是否有任何Gradle插件可以使用"build.gradle"文件中的版本?
我正在尝试使用gradle release-plugin "释放"我的项目
该插件首先检查我的工作副本是否干净,以便只发布正确版本的东西.
这在我的本地机器上工作得很好.但是,当我在Jenkins工作中尝试相同的事情时,构建失败抱怨工作场所中的各种内容发生了变化.我决定jenkins在内部使用很多东西并将其添加到gitignore:
caches/
native/
wrapper/
Run Code Online (Sandbox Code Playgroud)
但它也认为gradlew已经改变:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':checkCommitNeeded'.
> You have uncommitted files:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
M gradlew
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)
詹金斯为什么要更改该文件如何防止这种情况?
我认为Jenkins作业的以下设置可能是相关的:
Checkout/merge to local branch (optional)设置为主.如果没有此设置,发布插件会抱怨不在分支上
Clean after checkout 目前已经过检查,但检查/取消选中它并没有什么区别
Make gradlew executable 检查,至少对我来说听起来像是一个可能的原因,但取消选中它会使构建失败因为gradlew不可执行
我们目前正在将项目从 Maven 迁移到 gradle。我们的设置如下所示:
所有这些 Maven 子项目都是独立版本的
对于 Maven,我们使用版本插件,这确保我们设置(使用插件)子项目 1 的版本,新版本会传播到整个子树(并且 2 和 3 中的相应依赖项也会更改)。
我正在寻找gradle 发布插件bud 的文档,但找不到有关此功能的提及。它支持它吗,或者有其他插件支持吗?
第二个问题,由于我们正处于 maven-gradle 迁移过程中,是否可以将 maven 版本插件与任何此类 gradle 插件结合起来?(在 maven 中拥有 1 个版本,在 gradle 中拥有 2 和 3 个版本,但仍然可以实现该行为)。我的猜测不是,只是问一下,如果有人没有找到解决方案:-),所以我们不必一下子做 maven -> gradle 。
提前致谢!
我正在将现有的 Maven 项目转换为 Gradle,我想使用 Maven 发布插件的替代方案。主要是版本切掉后删除快照和自增1的功能。我遇到使用researchgate gradle-release-plugin,但需要确定如何使用它来实现上述类似maven 的功能。
我第一次尝试并浏览了以下网址: https: //github.com/researchgate/gradle-release
我正在与詹金斯一起使用gradle-release-plugin,我想使用
gradle release -Prelease.useAutomaticVersion=true
Run Code Online (Sandbox Code Playgroud)
自动增加版本。
但这会自动移动“ .patch”数字(假定major.minor.patch版本),而我正在尝试移动“ .minor”数字。
例如,如果发布1.3.17,则newVersion 1.4.0-SNAPSHOT
我将不使用release.releaseVersion和更改此自动替换
release.newVersion
可以通过插件配置完成versionPatterns吗?
也许使用这种模式/[.]*\.(\d+)\.(\d+)[.]*/?
gradle ×7
jenkins ×4
build.gradle ×3
maven ×2
release ×2
android ×1
build-script ×1
deployment ×1
git ×1
gradlew ×1
java ×1
publish ×1
regex ×1
ssh ×1