Gradle项目没有在Jenkins下正确命名存档

时间:2016-04-27 20:01:34

标签: jenkins gradle jenkins-plugins

我有许多Gradle版本,可以从命令行,构建版等中运行良好。

但是现在我将它们移植到Jenkins系统。它产生了一些非常奇怪的结果。我几乎是Jenkins的新手,所以这可能有一个简单的答案。到目前为止,我还没有找到它。

我正在使用Gradle Plugin for Jenkins, v.1.24在Jenkins中配置我的版本。但是,Jenkins(至少在配置它时)将其构建结构组织为{jenkins root}/data/jobs/{project_name}/workspace。从源代码管理中检出代码时,它将存放在该目录中,而不是存储在名为{project_name}的目录中。

Gradle似乎假设它运行的目录命名项目,当我在Jenkins之外运行时,这个假设是正确的。 Gradle看到的项目名称是从源代码管理中签出的项目的名称。 Project.name是一个gettable但不是gradle项目的可设置属性。因此,在Jenkins案例中,gradle构建的归档名为workspace*而不是{project_name}*。它在它发布的存储库中也被命名为workspace。我必须遗漏一些非常明显的东西,但对于我的生活,我无法弄清楚它是什么。

有没有人在努力解决这个问题?

更新 - 看来问题是设计我的Jenkins实例的人对Gradle一无所知。 Jenkins不需要我上面描述的{jenkins root}/data/jobs/{project_name}/workspace布局,但显然在某些其他非Gradle上下文中被认为是有用的。所以问题就变成了,在Jenkins配置中设置的项目布局在哪里 - 或者 - 可以以某种方式修改Gradle以采用不同的项目布局/命名策略。

2 个答案:

答案 0 :(得分:1)

设置管理Jenkins 配置系统 高级... (顶部的那个)→工作区根目录${JENKINS_HOME}/workspace/${ITEM_FULLNAME}

内联帮助:

  

指定Jenkins在主节点上存储作业工作区的位置。 (它对从属运行的构建没有影响。)该值可以包括以下变量。

     
      
  • ${JENKINS_HOME} - Jenkins主目录。
  •   
  • ${ITEM_ROOTDIR} - 为其分配默认工作区的作业的根目录。
  •   
  • ${ITEM_FULL_NAME} - '/' - 分隔的工作名称,例如“foo / bar”。
  •   
     

更改此值允许您将工作区放在SSD,SCSI甚至ram磁盘上。默认值为${ITEM_ROOTDIR}/workspace

.../jenkins/config.xml

...
<workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}</workspaceDir>
...

答案 1 :(得分:0)

  

Gradle似乎假设它运行的目录命名项目

是的,这是gradle的默认行为,但可以轻松覆盖。如果它只是您关注的输出工件名称,请使用以下命令覆盖jar名称:

jar{
    baseName 'actualProjectName'
}