#maven #automation
#maven #автоматизация
Вопрос:
Привет, я новичок в сообществе stackoverflow, я изучаю maven с точки зрения автоматизации. Здесь, если я добавлю плагин maven surefire_report в качестве зависимости в POM, я получу
Exception in thread "main" java.lang.NoSuchMethodError: 'void com.google.common.base.Preconditions.checkState(boolean, java.lang.String, java.lang.Object, java.lang.Object, java.lang.Object)'
Но он отлично работает, когда я упоминаю то же самое в тегах плагина. Итак, я хотел понять
-
Есть ли у них какие-то правила для того, что можно определить как плагин, а что — как зависимость в POM?
-
Возможно ли вообще определить плагин как зависимость каким-либо образом, как если бы упоминался плагин maven surefire в зависимости, он каждый раз работает нормально?
<dependencies> <dependency> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <type>maven-plugin</type> </dependency> <dependency> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> <version>3.0.0-M4</version> <type>maven-plugin</type> </dependency> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.0.0-alpha-5</version> </dependency>
2.3.2
org.apache.maven.plugins
maven-compiler-plugin
${maven-compiler-plugin-version}1.8
1.8
Комментарии:
1. Использование плагина в качестве зависимости обычно не имеет смысла, потому что вы не используете код плагина в своем собственном коде. Определение плагина в тегах плагинов делает sense…to определите, какие плагины и в какой версии используются.
Ответ №1:
Зависимости — это те артефакты, которые ваша программа будет использовать для компиляции и выполнения.
Плагины — это другой вариант. Они запускаются во время сборки, например, для обработки ресурсов, запуска тестов и т. Д.
Таким образом, использование плагина surefire в качестве зависимости означает, что вы хотите использовать его в своей программе (не во время сборки). И это, вероятно, не то, что вы хотите.