我有一个gradle buildscript。在这个脚本中,我设置了一些出版物。
稍后在脚本中我有一个任务,它从文件中读取Buildnumber并增加它。比项目版本更改。
现在我的问题:初始化“发布”-PlugIn后是否可以更改修订版/版本?如果我没有设置新版本,“发布”-PlugIn将抛出n错误。如果我通过编辑描述符来更改版本,插件说,不允许直接编辑描述符。
我还想根据内部版本号更改repository-url。
有人知道修复或遇到同样的问题吗?
publishing {
publications {
ivy(IvyPublication) {
organisation project.group
module project.name
revision project.version
descriptor.status = 'milestone'
from components.java
artifact(sourceJar) {
type "source"
conf "runtime"
}
}
maven(MavenPublication) {
groupId project.group
artifactId project.name
version project.version
from components.java
}
}
repositories {
ivy {
// change to point to your repo, e.g. http://my.org/repo
url "P:/Java/Repo/ivy"
}
maven {
// change to point to your repo, e.g. http://my.org/repo
url "P:/Java/Repo/maven"
}
}
}
这是我增加内部版本号的脚本
def incVersion(project) {
project.versionInced = true
def versionPropsFile = file("${project.rootDir}/version.properties")
if (!versionPropsFile.canRead()) {
versionPropsFile.createNewFile();
}
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
if(versionProps['build_version'] == null)
{
versionProps['build_version'] = 0;
}
def code = versionProps['build_version'].toInteger()+1;
versionProps['build_version']=code.toString()
versionProps.store(versionPropsFile.newWriter(), null)
project.projectInfos.version = project.version + "." + code.toString()
project.version = project.projectInfos.version
println "Version: "+project.version
return project.version
}
答案 0 :(得分:1)
如果我理解得很好,可以动态地完成。您可以在通过项目属性(-P
)或通过系统属性(-D
)运行gradle时传递版本。
它将是:
gradle <some_task> -PsomeVersion=<version>
您需要更改gradle脚本才能读取属性,因此:
publishing {
publications {
ivy(IvyPublication) {
revision project.hasProperty('someVersion') ? project.someVersion : '<HERE YOU NEED TO PUT DEFAULT VERSION OR MAYBE THROW EXCEPTION IF EMPTY>'
//...
}
}
}
如果您不检查项目是否具有该属性(在项目实例上使用hasProperty
方法),则会抛出MissingPropertyException
。