在Jenkins服务器中,定义了两个全局环境变量。在管理Jenkins中-
名称:MAVEN_HOME Value:/var/HOME/tools/hudson。任务。Maven_Maven安装/maven3.5.2
名称:PATH EXTRA$PATH:/usr/local/bin:$MAVEN\u HOME/bin
我看到PATH EXTRA会将MAVEN PATH添加到PATH环境变量中。这就是我现有的服务器设置。现在我需要使用Maven 3.8.2更新Jenkins,所以我使用Manage Jenkins在服务器中下载了Maven 3.8.2-
在Jenkins管道脚本中
def maven_version = 'maven_3.8.2'
pipeline {
agent any
stages {
stage ('build') {
steps {
withEnv(["PATH+MAVEN=${tool maven_version}/bin"]) {
echo "PATH is: $PATH"
echo env.PATH
echo env.MAVEN_HOME
sh 'env'
sh 'mvn --version'
}
}
}
}
}
结果:
>
回显“PATH is:$PATH”=
回声环境。路径=
回声环境。MAVEN_主页=
sh“env”=
为什么路径在前面附加了Maven 3.5.2。如何让PATH指向Maven 3.8.2?
如何使用maven3.8.2获取mvn--version结果?
注意:我也尝试过自由风格的项目,并使用以下命令覆盖这些值,但mvn版本总是打印3.5.2。知道这是Jenkins无法覆盖路径的错误吗?或者有什么方法可以做到吗?导出MAVEN_HOME=/var/HOME/tools/hudson。任务。Maven\u MavenInstallation/Maven\u 3.8.2导出路径=$PATH:$Maven\u HOME/bin
用于修改路径变量的格式使用串联,将新值前置到现有值。这意味着
PATH+MAVEN=${tool maven_version}/bin
相当于:
PATH=${tool maven_version}/bin:$PATH
您可以通过显式覆盖PATH
变量并将新路径放在变量末尾来解决此问题。尝试像这样测试管道:
def maven_version = 'maven_3.8.2'
pipeline {
agent any
stages {
stage ('build') {
steps {
withEnv(["PATH=${tool maven_version}/bin:$PATH"]) {
echo "PATH is: $PATH"
echo env.PATH
echo env.MAVEN_HOME
sh 'env'
sh 'mvn --version'
}
}
}
}
}
问题内容: 我得到输出b 3。为什么它没有给出b13作为输出。任何人都可以解释一下。 问题答案: 假设Foo类声明如下 变量没有覆盖的概念。他们只是被蒙面。 它正在打印3,因为当您使用超类引用访问变量时,它仅访问在超类中声明的变量。 请记住,超类对子类一无所知。
问题内容: 我尝试按照食谱中的描述自定义行为。 在ipython中: 没有被调用。看来在我的python 2.5安装中不起作用。 问题答案: 使用的是ipython,而不是普通的Python交互式shell,它本身捕获所有异常,并且不使用sys.excepthook。以代替just的方式运行它,它将在未捕获的异常时自动调用pdb,就像您尝试使用excepthook一样。
注意:这里有几个人引用的解决方案不适用于我的问题。。。 我有一个java。sql。要在getter中格式化为字符串的时间戳字段。我在课程开始时使用Lombok@Data。但是,当我用自己的getter覆盖Lombok的getter(格式化时间戳)时,字段总是空的。我在文档中没有看到任何东西来解释这种行为。 这段代码将结算日期作为时间戳提供给我: 这个代码块给了我一个NPE,因为setementDa
为什么我不能重写类中的doInBackground方法? 错误:类AttemptLogin必须声明为抽象或实现抽象方法'doInBackground(参数…)在“异步任务”中 如果我将doInBackground的参数更改为(Object[]),它就会工作。为什么我不能传递字符串值?
问题内容: 我有一个Dockerfile,我想使用默认值来配置API。 来自socialengine / nginx-spa ENV API_URL本地主机:6007 因此,当我运行此映像时,我将能够使用以下内容覆盖localhost:6007: 码头工人运行-e API_URL = production.com:6007 ui 这是行不通的,我找不到如何执行此操作的清晰说明。 有什么建议吗? 问
在for循环中,为不同的变量分配一个值。已经赋值的变量将从下一次迭代中获得赋值。最后,两个变量的值相同。该代码用于验证文件中的数据。当我打印这些值时,它会为第一次迭代打印正确的值,但在下一次迭代中,第一次迭代中指定的值会更改。当我在for循环中打印$value3和$value4的值时,它会为$value4显示null,为$value3显示一些值,但在下一次迭代中,$value3的值会被$value