有没有办法更改Jenkins Maven构建的工作目录?

时间:2013-06-26 03:16:29

标签: jenkins

有没有办法更改Jenkins Maven构建的工作目录?

使用案例

Maven构建仅在当前工作目录是包含pom.xml的目录时才有效,所以我希望Maven构建在该目录中执行。

带有pom.xml的目录位于git项目的子目录中。

9 个答案:

答案 0 :(得分:12)

创建一个目标来结帐父母。

  • 签出构建目标的父目录
  • 设置构建 - >目标=清洁
  • 运行构建并确定目标工作区目录(控制台输出的第二行,在我的示例/ var / lib / jenkins / workspace / my_project中)

创建目标以构建路径

  • 请勿选中“在构建开始前删除工作区”
  • 在构建中 - >高级 - 选中“更改工作区文件夹”并粘贴/ yourtarget目录

它对我有用。

答案 1 :(得分:10)

不知道什么时候添加,但是对于我前面的Jenkins(Jenkins ver。1.627,每页底部),现在有一个选项来定义根pom.xml的位置(帮助消息说:< / p>

  

如果您的工作区在除了之外的某个位置具有顶级pom.xml   第一个模块的根目录,指定路径(相对于   模块根目录)这里,例如parent / pom.xml。如果留空,则默认为   的pom.xml

)。我遇到了同样的问题,但后来意识到答案是盯着我的脸(请注意,我没有按照Hua2308的建议打高级,可能是因为他们改变了用户界面)

答案 2 :(得分:4)

作为参考,这对我有用。在&#34; Invoke顶级Maven目标&#34;构建步骤,有一个&#34;高级...&#34;按钮。如果单击此按钮,则可以指定POM.xml文件的相对路径。这应该确保您只在子目录中构建所需的项目。

答案 3 :(得分:2)

您可以使用Maven's -f option

-f,--file <arg>    Force the use of an alternate POM file (or directory with pom.xml).

例如,如果您的项目具有结构:

README.md
sources
|----pom.xml
|----services
|    |----pom.xml
|    +----src
|----webservices
|    |----pom.xml
|    +----src
+----....
useful
docs

然后您可以在Goals中使用Invoke top-level Maven targets

-f sources/pom.xml clean install

答案 4 :(得分:2)

我来这里是因为我描述了同样的情况,我遇到的Hudson / Jenkins版本也有同样的问题,它不允许在调用maven之前设置工作目录。

解决方法是配置一个具有所需工作目录的参数,创建一个新的命令“ mvn”以创建更改目录,然后使用所有参数调用maven的原始命令“ mvn”。

要遵循的步骤:

  1. 在项目中应注意,需要对项目进行参数化,在我的情况下,请创建参数WORKING_DIRECTORY,其值为$ {WORKSPACE} / maven,将“ maven”作为工作目录的子文件夹。 enter image description here

  2. 创建maven的“自定义”版本以修改“ mvn”命令:

cp -ip /opt/apache-maven-3.5.4 / opt / maven_custom

mv / opt / maven_custom / mvn / opt / maven_custom / mvn_original

vi / opt / maven_custom / mvn:

-内容新的mvn命令-

cd $ WORKING_DIRECTORY

/ opt / maven_custom / bin / mvn_原始的“ $ @”

-结束内容新的mvn命令-

chmod ugo + x / opt / maven_custom / mvn

  1. 在hudson / Jenking中添加新的maven_custom:

    Hudson Admin->系统配置-> Maven->添加Maven

  2. 在项目中使用自定义行家

通过这些更改,maven在另一个工作目录中运行

答案 5 :(得分:1)

转到maven项目的配置,然后:

构建&gt;点击“高级”按钮&gt;选中“使用自定义工作区”&gt;设置目录

(我正在使用Jenkins版本1.508)

答案 6 :(得分:0)

我们正在使用的Jenkins是德语,所以我想猜测选项是如何翻译的。

转到项目的配置,然后转到增强的项目配置(这是第二部分)并展开它。最后一点应该是Change folder of workspace。我想这可能就是你要找的东西。

否则,您始终可以转到Build选项并更改pom.xml的路径

答案 7 :(得分:0)

解决方案:

cd subfolder; mvn -f ../pom.xml task

Maven并没有提供相反的选择,这意味着这个用例的合理方式,可能是因为Maven讨厌你。

答案 8 :(得分:0)

当子目录是父根的直接子目录时,可以使用mvn --projects,因为它将更改为子目录。这是一个证明(请参见最后一行):

U:\git\ics-VCCUSTOM-422>mvn --projects icsIntegrationTest clean verify
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< com.afklm.vccustom:icsIntegrationTest >----------------
[INFO] Building icsIntegrationTest 13.3.4-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ icsIntegrationTest ---
[INFO] Deleting U:\git\ics-VCCUSTOM-422\icsIntegrationTest\target
[INFO]
[INFO] --- buildnumber-maven-plugin:1.3:create (default) @ icsIntegrationTest ---
[INFO] ShortRevision tag detected. The value is '7'.
[INFO] Executing: cmd.exe /X /C "git rev-parse --verify --short=7 HEAD"
[INFO] Working directory: U:\git\ics-VCCUSTOM-422\icsIntegrationTest
相关问题