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

使用Intellij Idea在Java项目中突出显示Jenkins文件语法

吕宣
2023-03-14

我们已经尝试了以下方法:

  • https://github.com/oliverlockwood/jenkinsfile-idea-plugin
  • https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij

在网上搜索了好几天好几个小时后,我们仍然没有找到关于这个问题的有用资源。因此,在这里提出一个新问题似乎是有道理的。

我们正在IntelliJ idea中开发Java项目,并希望将我们的构建与Jenkins集成。在Idea中创建Jenkins文件时,不会得到语法高亮显示或自动完成。由于我们是詹金斯的新手,这些功能对我们来说真的很有用。我们怎样才能让Idea更支持詹金斯档案?

如果在idea中无法获得Jenkins文件的语法高亮显示和自动完成,那么其他哪些编辑器会有所帮助?

请注意:

>

  • 我们使用的是java项目,而不是groovy项目。

    我们已经尝试了插件https://github.com/oliverlockwood/jenkinsfile-idea-plugin.当插件被激活时,Jenkinsfile被识别为这样,但是我们得到的不是语法高亮显示,而是错误消息,请参见下面。

     pipeline {
     agent { docker 'maven:3.3.3' }
     stages {
         stage('build') {
             steps {
                 sh 'echo Hello, World!'
             }
         }
       }
     }
    

    Idea将管道的p突出显示为错误。错误消息如下:

    JenkinsTokenType.COMMENT, JenkinsTokenType.CRLF or JenkinsTokenType.STEP_KEY expected, got 'p'
    

    感谢任何帮助!


  • 共有3个答案

    郦何平
    2023-03-14

    另一个选择是在Jenkinsfile上面使用shaang,就像这样#!/usr/bin/envgroovy。你也可以尝试gdsl:https://st-g.de/2016/08/jenkins-pipeline-autocompletion-in-intellij但是到目前为止它不支持声明式管道:https://issues.jenkins-ci.org/browse/JENKINS-40127

    咸弘雅
    2023-03-14

    最后,我们找到了一个适合我们的解决方案,并为idea中正常Java项目中的Jenkinsfile提供语法突出显示和代码完成。解决方案取自这里,这里(以及额外的个人实验/研究)

    >

    从Jenkins实例下载pipeline GDSL文件,该文件应该可以通过以下链接获得:https://yourJenkinsInstance.tld/pipeline-syntax/gdsl,并将其添加到Java项目的类路径中。例如,通过创建一个新文件夹src/main/jenkins,将管道gdsl文件放在那里,并在IntelliJ Idea中将该文件夹标记为源根目录

    添加"Jenkinsfile"作为groovy文件的有效文件名模式,如下所述

    为了避免错误消息,“节点”不能应用于“(groovy.lang.Closure)

    //无检查功能检查

    凌联
    2023-03-14

    如果您希望IDEA将Jenkinsfile识别为Groovy文件,那么您可以添加字符串Jenkinsfile作为Groovy文件的有效文件名模式(通常包含文件结尾)。这是支持开箱即用的,不需要任何额外的插件(除了Groovy插件,但它已经是IDEA的一部分)。

    据我所知,IDEA现在提供了语法高亮显示和自动完成。它在编写时建议现有的函数/方法名称,但我不是Groovy开发人员,因此我无法判断是否缺少一些建议。

     类似资料:
    • 问题内容: 很快,我将被迫在Haskell中提出一个项目,该项目应该突出显示Java语法。我做了一些研究,发现Happy可能是一个解决方案(因为它是类似yacc的解析器)。还提到了野牛和帕尔塞克。由于我是Haskell的新手,所以我真的对启动该项目一无所知。任何提示都会有很大帮助。 谢谢! 问题答案: 由于我是Haskell的新手,所以我真的不知道如何启动该项目 啊,这才是真正的问题。要开始学习H

    • 我喜欢PyCharm,但是似乎找不到启用Ruby语法突出显示的方法。我知道RubyMine,但我不会只为这个基本功能购买许可。PyCharm中可以添加Ruby语法高亮显示吗?

    • 我正在使用pycharm进行我正在从事的python项目。我在根目录中有几个 cfg 文件和一个 .pylintrc 文件。 但是,pycharm 不会检测到这些文件以进行语法突出显示。例如,WebStorm 检测到 .eslintrc 文件并非常优雅地突出显示语法。 Pycharm建议为cfg文件使用上下文自由语法插件,但我认为它不是python cfg文件的正确类型。 我如何配置py 这是我的

    • 我环顾四周,找不到一种自动完成这项工作的方法。所以: 我在vim中内置了一些语法高亮,我想转移到vscode。我至少有两个部分卡住了。 到目前为止,我的情况是这样的:我已经构建了一个vscode语言扩展——设置了一些基本的语法规则,并将其复制到vscode config文件夹中。 我遇到麻烦的部分-我可以在某些字段的含义中澄清一下-命名约定。 和语法的嵌套解析,这些东西只出现在其他元素中。 下面是

    • 问题内容: 我正在尝试突出显示与查询匹配的文本,但是我不知道如何使标记显示为HTML而不是文本。 当前输出: Java 脚本 所需的输出: Java 脚本 问题答案: 这是我简单的twoliner辅助方法: 它返回一个跨度,其中所请求的零件以标签突出显示。如果需要,可以简单地将其修改为使用其他标签。 更新: 为避免唯一键丢失警告,这是一个基于跨度并为匹配的零件设置fontWeight样式的解决方案

    • 问题内容: 我很好奇是否有人知道一旦/当用户完成在网页上的文本选择后,我将如何触发一个函数运行?我希望用户能够选择文本,并且在短暂的延迟后(或立即,此时无所谓),文本附近会出现一个叠加按钮,用户可以单击该按钮,然后我返回并运行我的更多基于选择的代码。这是用于Firefox扩展。 我能想到的一个类似示例就像在IE中一样,您可以在其中选择文本,然后显示“ Web加速器”。我99%确信我知道如何实际覆盖