当前位置: 首页 > 知识库问答 >
问题:

在gradle中设置systemProperty。任务图。whenReady公司

蔚俊人
2023-03-14

我试图读取登录到我的应用程序并将其分配给系统属性所需的用户名和密码。我能够使用<代码>系统读取值。控制台()。readLine,但我无法将其分配给system属性。属性值总是空的,我知道它是空的,就像我做了一个<代码>系统一样。控制台()。在这两个属性上打印ln。

我使用gradle.taskGraph.when就绪的原因是因为我不希望每个任务都要求密码,而只是在运行用于Live的任务时。

下面是我的我的代码

def user_login =""
def pass_login =""

gradle.taskGraph.whenReady { taskGraph ->
    user_login = System.console().readLine("\nPlease enter username: ")
    pass_login = System.console().readPassword("\nPlease enter password: ")

    test {
        systemProperty "username", new String(user_login)
        systemProperty "password", new String(pass_login)    
    }
}

我在没有测试{…} 但这会产生以下错误消息:

Could not find method systemProperty() for arguments [username,] on root project

我在谷歌上搜索了很多,但没有找到这个问题的答案,非常感谢对此的任何帮助。

非常感谢。

共有2个答案

姜鸿
2023-03-14

从我在最新的gradle文档中看到的,Test有一个systemProperties属性,它接受一个Map。没有systemProperty。所以,我相信您需要以下内容(未经测试...参见下面的#2):

def user_login =""
def pass_login =""

gradle.taskGraph.whenReady { taskGraph ->
    user_login = System.console().readLine("\nPlease enter username: ")
    pass_login = System.console().readPassword("\nPlease enter password: ")

    test {
        systemProperties "username": user_login, "password": pass_login    
    }
}  

我还想补充一点,我看到你的方法有一些问题,你可能需要重新考虑。

  1. gradle是一个构建工具/平台,构建旨在需要最少的人为干预。这不是应该自动化吗?输入您的用户名和密码将变得非常烦人,非常快。我认为您应该考虑使用gradle属性。这样,构建用户就可以在他们的usergradle中设置用户名和密码。属性文件。这还有一个额外的好处,即可以用于多个版本,而无需提示用户

考虑使用:

/**
 * ~/.gradle/gradle.properties
 */
userName = me
userPassword = YouWillNeverKnow

/**
 * build.gradle
 */
apply plugin: 'java'
test {
        // use safe navigation to avoid missing property exception
        systemProperties "username": project?.userName, "password": project?.userPassword
    }
}  

我使用我的spock单元测试对我的groovy项目进行了上述测试,并且奏效了。

严兴言
2023-03-14

你可以直接调用系统。setProperty()

我认为groovy或gradle上都不存在名为systemProperty的方法

编辑:应用程序和gradle脚本不在同一个JVM实例中运行。这意味着gradle脚本中设置的系统属性不会传递给应用程序。您需要找到另一种方法在应用程序中获取用户名和密码。

 类似资料:
  • 根据最近在Gradle论坛上的声明,声纳插件和声纳转轮插件正在被弃用,支持SonarQube插件。有人可以分享任何链接(文档或博客),演示在詹金斯设置这个。我在本地设置上尝试了这一点,gradle sonarqube任务工作得很好。 提前感谢! 编辑:我不想把远程sonarqube实例的数据库用户名和密码放在我的gradle构建文件中,因此不想使用现有的“sonarqube”任务。

  • 主要内容:定义任务,任务依赖关系,定位任务,向任务添加依赖关系,向任务添加描述,跳过任务,参考 -Gradle构建脚本描述一个或多个项目。每个项目都由不同的任务组成。任务是构建执行的一项工作。任务可以是编译一些类,将类文件存储到单独的目标文件夹中,创建JAR,生成Javadoc或将一些归档发布到存储库。 定义任务 任务是用于将任务定义到构建脚本中的关键字。看看下面的例子,它是一个叫作 hello 的任务,将打印一个字符串:。将以下脚本复制并保存到 文件中。 此构建脚本定义一个名称为 “hell

  • 我有一个pygame应用程序,我想为它设置任务栏图标。我试过了 但毫无效果。我用cx_Freeze将它编译成一个。exe,并在那里设置。exe图标。当我运行该程序时,它将任务栏中的图标设置为默认的pygame图标。我还设置了pygame窗口的图标 其他信息: 提前感谢您的任何帮助。

  • 我以为这会起作用,但事情一定发生了变化(或者我犯了某种错误) 根据父项目的任务,gradle子项目任务的语法是什么? 我在根级别上有以下任务(即子项目闭包之外和所有项目闭包之外)。 我得到的错误是 然后我猜了几件事包括这个 但那给了我错误 版本信息因此

  • 我尝试用JavaExec类型创建gradle任务。在gradle文档中,我发现我不需要使用java插件。但是这个插件与android插件不兼容。如果我没有应用java插件,我会收到以下错误: 错误:无法找到或加载主类包。TestM 我的任务示例: 如果使用相同的任务创建java库模块,则会收到相同的错误: 错误:无法找到或加载主类 也许我需要设置类路径变量?如何在Android Studio中获取

  • 我有一个这样的多项目构建 现在,在项目中,我已经为所有子项目声明了一个任务,如下所示: 当我运行时,我得到的输出类似于以下内容(其他内容): 现在,我尝试像这样为简单项目运行该任务 我得到的输出是: 失败:构建失败,但有一个异常。 > 哪里出错了:在项目中找不到任务你好:例子:简单项目。一些候选人是:帮助。 尝试:运行gradle任务以获取可用任务的列表。使用--stack跟踪选项来获取堆栈跟踪。