Maven упаковка без теста (пропустить тесты)
Я новичок в Maven. Я пытаюсь упаковать свой проект. Но, он автоматически запускает тесты. Тесты вставляют некоторое содержимое в базу данных. Это не то, что я хочу, мне нужно избегать запуска тестов во время упаковки приложения. Кто-нибудь знает, как запустить пакет без теста?
17 ответов:
просто введите команду, указанную ниже, которая будет игнорировать выполнение тестовых случаев,
mvn package -DskipTests
вы можете добавить эту конфигурацию плагина в свой pom, если вы не хотите устанавливать командную строку arg:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <skipTests>true</skipTests> </configuration> </plugin>
обратите внимание, что -Dmaven.тест.skip предотвращает создание Maven артефакта test-jar.
Если вы хотите пропустить тесты, но создать артефакты в соответствии с обычным использованием сборки:
-Dmaven.test.skip.exec
Если вы пытаетесь это сделать в Windows Powershell, вы получите эту ошибку:
[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format...причина этого в том, что в Powershell"
-" имеет особое значение, и это вызывает проблемы с maven.решение состоит в том, чтобы добавить его с помощью обратного щупа ( ` ), например..
mvn `-Dmaven.test.skip=true install
<properties> <maven.test.skip>true</maven.test.skip> </properties>- это также способ добавить в POM файл
вы можете пройти
maven.test.skipфлаг в качестве аргумента JVM, чтобы пропустить выполнение тестов при запуске фазы пакета (и предыдущих в жизненном цикле по умолчанию):mvn package -Dmaven.test.skip=trueвы также можете пройти
skipTestsфлаг только для исполняемого файла mvn. Если вы хотите включить эту информацию в свой POM, вы можете создать новый профиль, где вы можете настроитьmaven-surefire-pluginдо пропустить тесты.
отвечая на старый и принятый вопрос здесь. Вы можете добавить это в твоей пом.xml если вы хотите избежать передачи аргумента командной строки все время:
<properties> <skipTests>true</skipTests> </properties>
тесты всегда должны [1] выполняться перед пакетом. Если вам нужно отключить тесты, вы делаете что-то неправильно. Другими словами, вы пытаетесь решить не ту проблему. Выясните, в чем ваша проблема на самом деле, и задайте этот вопрос. Похоже, это связано с базой данных.
[1] Вы можете пропустить тесты, когда вам нужно быстро создать артефакт для локального использования в разработке, но в целом создание артефакта всегда должно следовать за успешным тестовым запуском.
вы, очевидно, делаете это неправильно. Тестирование является важной частью предварительной упаковки. Вы не должны игнорировать или пропустить его, а сделать это правильно. Попробуйте изменить базу данных, в которую он вставляет данных(test_db). Это может занять некоторое время, чтобы установить его. И чтобы убедиться, что эта база данных может быть использована навсегда, вы должны удалить все данные к концу тестов. JUnit4 есть аннотации, которые делают его легким для вас. Используйте аннотации @Before, @After @Test для правильных методов. Вам нужно потратьте на это время, но оно того стоит!
лучший и самый простой способ сделать это, в IntelliJ Idea в окне "Maven Project", и просто не нажимайте на кнопку test. Надеюсь, я вам помог. Хорошего дня :)
в Intellij перейдите в меню Вид - > окна инструментов - > выберите проекты Maven. На жизненный цикл в выпадающем списке, щелкните правой кнопкой мыши на пакет -> выбрать Создать свой проект [пакет]'...
введите это значение:
package -Dmaven.test.skip=true -f pom.xmlв поле командной строки. Нажмите кнопку Применить, и вместе с созданной пользовательской командой maven появится выпадающее меню Выполнить конфигурации.
можно добавить
-DskipTestsили-Dmaven.test.skip=trueлюбойmvnкоманда для пропуска тестов. В вашем случае это было бы как ниже:mvn package -DskipTestsили
mvn package -Dmaven.test.skip=true
Comments