Чи є спосіб змінити робочий каталог збірки Jenkins Maven?

Чи є спосіб змінити робочий каталог збірки Jenkins Maven?

Випадок використання

Існує збірка Maven, яка буде працювати лише у випадку, якщо поточний робочий каталог є каталогом pom.xml у ньому, тому я хочу, щоб збірка Maven виконувалася в цьому каталозі.

Каталог з pom.xml знаходиться в підкаталозі проекту git.

26

7 Відповіді

Створіть ціль для перевірки батьків.

  • Checkout the parent dir of your build target
  • Set Build -> Goal = clean
  • Run build and ascertain the destination workspace directory (second line of console output, in my sample /var/lib/jenkins/workspace/my_project)

Створіть ціль, щоб побудувати свій шлях

  • DO NOT check "Delete workspace before build starts"
  • In Build -> Advanced - Check "Change folder of workspace" and paste your /yourtargetdirectory

Це працювало для мене.

12
додано
Чи є це ручна копія тут?
додано Автор rogerdpack, джерело
Отже, ви створюєте тут дві різні «дженінські» проекти, по суті?
додано Автор rogerdpack, джерело
@rogerdpack, не впевнений, що я зрозумів ваше запитання, але ні, це не ручна копія (ну, з того, що ви копіюєте шлях, але не файли), це просто посилання на папку всередині робочого простору проекту
додано Автор ton, джерело
Я не бачу жодного варіанту "Змінити папку робочої області" (Jenkins ver. 1.605).
додано Автор Erez Cohen, джерело

Не впевнений, коли це було додано, але для Jenkins перед собою (Jenkins вер. 1.627 в нижній частині сторінки), тепер є опція для визначення, де кореня pom.xml є (повідомлення довідки говорить:

Якщо ваш робочий простір має верхній рівень pom.xml де-небудь, окрім   Кореневий каталог 1-го модуля вказує шлях (щодо   root root) тут, наприклад parent/pom.xml. Якщо залишено порожнім, за умовчанням встановлюється значення   pom.xml

). Я зіткнувся з тією ж проблемою, але потім зрозумів, що відповідь дивилася мені в обличчя (зауважте, що мені не довелося натискати передовий, як запропонував Hua2308, ймовірно, тому, що вони змінили інтерфейс користувача)

10
додано
У моєму випадку я спробував це і виявилося, що не працює, але виявилося, що у мене був спеціальний крок "post build", який будував все від кореня, тоді як початкова побудова працювала належним чином. Отже, зверніть увагу на сам: addd "-f XXX" до ручних кроків побудови, якщо ви використовуєте цю опцію :)
додано Автор rogerdpack, джерело
ОР запитав про CWD. Ця відповідь не вирішує проблеми з погано написаними ієрархіями проектів, де запуск mvn -f submodule/pom.xml і підмодуль cd && mvn дає різні результати (наприклад: лише один спосіб працює через відносних шляхів у помс). Роботи Jenkins Maven і Freestyle, здається, не дають змоги змінити робочий каталог так, як це роблять робочі місця Pipeline, тому Pipeline - це єдине рішення. Зауважте, що Maven і Freestyle виконують mvn -f submodule/pom.xml по-різному - зокрема, в різних каталогах.
додано Автор Akom, джерело

Для довідки, ось що працює для мене. У кроці збірки "Викликати цілі Maven верхнього рівня" є кнопка "Додатково ...". Якщо натиснути цю кнопку, можна вказати відносний шлях до файлу POM.xml. Це має гарантувати, що ви створюєте бажаний проект у підкаталозі.

3
додано
Можливо, ви мали на увазі побудувати тут попередній крок? Ось тут я знаходжу цей параметр (незалежно від цього, див. Відповідь Foon про те, як це зробити, не виконуючи попереднього кроку FWIW ...)
додано Автор rogerdpack, джерело

You can use Maven's -f option

-f,--file     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

тоді ви можете використовувати Цілі у Викликати цілі Maven верхнього рівня :

-f sources/pom.xml clean install
2
додано
Це те, до чого, по суті, "додає" відповідь Фуна (за винятком того, що вона додається до всіх фаз, наприклад, пост-зборка сонара, тому вам не доведеться турбуватися про додавання його вручну в багатьох місцях). І це спрацювало для мене :)
додано Автор rogerdpack, джерело
Це працювало для мене.
додано Автор Michael Munsey, джерело
Це не змінює робочий каталог; Сценарій, який виконується як частина збірки Maven, передбачає, що поточний робочий каталог - це каталог з pom.xml у ньому.
додано Автор Max Nanasy, джерело
Це взагалі не відповідає на це питання. Вона відповідає на питання, але не на запитання ...
додано Автор Jasper, джерело

Перейдіть до конфігурації вашого проекту maven, а потім:

Build > click the "Advanced" button > check "Use custom workspace" > set the directory

(Я використовую версію Jenkins 1.508)

1
додано
Ви маєте на увазі Додаткові параметри проекту> Використовувати спеціальні робочі області ? Якщо так, то згідно з документацією, "Це каталог, в якому виписується код і відбувається його побудова", що не вирішує мого випадку використання збірки з робочим каталогом у підкаталозі проекту.
додано Автор Max Nanasy, джерело

Дженкінс, з яким ми працюємо, є німецькою, тому я намагаюся вгадати, як перекладаються варіанти.

Перейдіть до конфігурації вашого проекту і перейдіть до розширеної конфігурації проекту (це другий розділ) і розгорніть його. Останньою точкою слід назвати Змінити папку робочого простору . Я думаю, що це те, що ви шукаєте.

В іншому випадку ви завжди можете перейти до опцій Build і змінити шлях до вашого pom.xml

0
додано
Хм, OK. На жаль, я не міг допомогти.
додано Автор André Stannek, джерело
A. Змінити папку робочого простору змінює папку, куди завантажується проект, а не робочий каталог процесу, який виконує збірку Maven. B. Незалежно від того, який pom.xml побудований, робочий каталог є директорією верхнього рівня робочої області.
додано Автор Max Nanasy, джерело

Рішення:

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

Maven не дає можливості зробити це навпаки, маючи на увазі розумний шлях для цього випадку, можливо, тому, що Maven вас ненавидить.

0
додано