Заставьте Maven использовать внутренние и внешние банки зависимости - PullRequest
0 голосов
/ 09 марта 2020

Я интегрировал Jenkins в мой проект Maven Selenium Java. У меня есть «SeleniumUtils-0.0.2-14.0.0.0.jar», который упоминается в POM. xml как:

<dependency>
            <groupId>com.disney.gqe</groupId>
            <artifactId>SeleniumUtils</artifactId>
            <version>0.0.2-14.0.0.0</version> 
</dependency>

Этот Jar-файл был передан мне локально предыдущим кодером. Тогда сборка Jenkins не была реализована. Проект отлично работает локально в Eclipse, ссылаясь на jar из папки m2 / repo. Когда я строю с использованием «чистой установки» в Jenkins, я получаю сообщение об ошибке: Загрузка с центрального сервера: https://repo.maven.apache.org/maven2/com/disney/gqe/SeleniumUtils/0.0.2-14.0.0.0/SeleniumUtils-0.0.2-14.0.0.0.jar

Я не хочу, чтобы Maven просматривал этот jar-файл в центральном, так как он у меня есть на местном уровне. Как я могу локально добавить файл в папку репозитория Jenkins и построить проект?

Ответы [ 4 ]

1 голос
/ 10 марта 2020

@ JFMeier абсолютно прав, вы должны поместить зависимости в размещенный репозиторий Maven.

Однако, если у вас его нет, вы можете сделать это:

<dependency>
  <groupId>com.disney.gqe</groupId>
  <artifactId>SeleniumUtils</artifactId>
  <version>0.0.2-14.0.0.0</version> 
  <scope>system</scope>
  <systemPath>path/to/the/jar</systemPath>
</dependency>

Обратите внимание, я не , говоря это хорошая идея, но зависимость от system Область действия не позволит Maven искать зависимости извне.

Проблема с системными зависимостями заключается в том, что теперь каждый раз, когда кому-то (кому-либо) нужно делать сборку, ему нужно помещать банку в в том же месте, что и вы. Вы можете обойти это, введя параметр свойства в settings.xml каждого пользователя, но теперь у вас есть проблема с обслуживанием, которой нужно управлять.

Вы были предупреждены.

0 голосов
/ 09 марта 2020

Если у вас есть Jenkins, у вас, вероятно, есть Nexus или Artifactory (это как минимум рекомендуемое место для хранения ваших построенных артефактов). Этот Nexus или Artifactory также является местом для размещения библиотек, подобных той, которую вы упомянули.

0 голосов
/ 10 марта 2020

Если вы соберете проект с «чистой установкой», то он по умолчанию очистит локальный репозиторий .m2 и попытается загрузить его из доступного списка из репозиториев из локального файла pom. xml или файла Settings. xml.

Если вы скопировали флягу локально в репозитории, попробуйте собрать проект просто "install", без "clean".

0 голосов
/ 09 марта 2020

Вы можете принудительно установить updatePolicy в соответствии с вашими потребностями в $USER_HOME/.m2/settings.xml

http://maven.apache.org/settings.html#Repositories

updatePolicy: этот элемент указывает, как часто обновления должны пытаться происходить. Maven будет сравнивать временную метку локального POM (хранящуюся в файле метаданных репозитория) с удаленным. Возможны следующие варианты: всегда, ежедневно (по умолчанию), интервал: X (где X - целое число в минутах) или никогда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...