Когда я снова увижу mvnw, я его безжалостно убью

Java maven

Не завидуйте мандаринкам или бессмертным, а строчку кода корректируйте долго. Оригинал: Miss Sister Taste (идентификатор публичной учетной записи WeChat: xjjdog), добро пожаловать, пожалуйста, сохраните источник для перепечатки.

использоватьstart.spring.ioСоздайте проект, вы обнаружите, что естьmvnwа такжеmvnw.cmdдва файла. Два файла в сумме составляют более 20 КБ.

Мой код еще не превышает 20 строк, поэтому я соединил эти два файла, какой в ​​этом смысл? Что за чертовщина?

Официально этоmavenодин изwrapper, когда maven не найден, он автоматически загрузит его или, если ваш проект maven несовместим с mavne в вашей среде, он также загрузит его автоматически.

Разве это не смешно? Разве ты не знаешь, что я сейчас в недрах ЛАН?

Давайте попробуем выполнить традиционную команду mvn и увидим, что она использует mvnw для замены самой себя.

 ~/codes/ $ mvn -Dmaven.test.skip=true -Pdev package
executing mvnw instead of mvn

Exception in thread "main" java.util.zip.ZipException: error in opening zip file
	at java.util.zip.ZipFile.open(Native Method)
	at java.util.zip.ZipFile.<init>(ZipFile.java:225)
	at java.util.zip.ZipFile.<init>(ZipFile.java:155)
	at java.util.zip.ZipFile.<init>(ZipFile.java:169)
	at org.apache.maven.wrapper.Installer.unzip(Installer.java:169)
	at org.apache.maven.wrapper.Installer.createDist(Installer.java:86)
	at org.apache.maven.wrapper.WrapperExecutor.execute(WrapperExecutor.java:121)
	at org.apache.maven.wrapper.MavenWrapperMain.main(MavenWrapperMain.java:61)

Однако после долгого ожидания журнал не прокручивался вниз. Прождав более десяти минут, я наконец получил вывод, и результатом была ошибка. Затем каждый последующий запуск выдает ошибку.

Он очень шумный, пора дать ему показать свое истинное лицо.

использоватьpsкоманда, нашла ее параметры запуска. Выяснилось, что, кромеmvnwфайла, он также был тайно размещен в проекте.mvnкаталог, молодец, есть много64kb.

# ps -ef| grep mvn
java -classpath ~/codes/.mvn/wrapper/maven-wrapper.jar -Dmaven.home=~/codes -Dmaven.multiModuleProjectDirectory=~/codes  org.apache.maven.wrapper.MavenWrapperMain -Dmaven.test.skip=true -Pdev package

Это действительно лишнее, лучше этого не делать. Если вы заботитесь, просто подключите егоapache mavenВнутри.

Глубоко в стране лучший способ справиться с этим:

удалите это!
удалите это!
удалите это!

Какими бы благими ни были его первоначальные намерения и насколько велика была их цель, их все равно необходимо безжалостно убивать.

Был младший брат, который использовал mvnw для загрузки пакета jar в течение дня и, наконец, тупо пожаловался мне: частный сервер maven компании слишком медленный.

Не могу нести этот горшок.

Хороший проект не зависит от конкретного инструмента упаковки. Это ленивый плагин проекта maven, потому что у базового инструмента есть один момент, который необходимо выполнить, и это обратная совместимость.

Чтобы придумать такой инструмент, даже CDN неохота его делать Это не для удобства разработчиков, а для добавления путаницы разработчикам.

Что еще более ужасно, так это то, что предприятие создает свой собственный частный сервер maven и имеет свой собственный файл конфигурации и учетную запись. Чтобы использовать эту штуку, вам также нужно знать, где скачан maven, и найти файл конфигурации, чтобы заменить его позже. Типичный клубень не волнует.

Конечно,gradleЭто тоже добродетель.

Таким образом, xjjdog справляется с этим, чтобы увидетьmvnwа также.mvnЭти файлы, убивайте его безжалостно в первую очередь.

Хоть я и был жестоким, я подвел доброту автора. Но в таком сетевом окружении на глубине я тоже беспомощен.

Об авторе:Мисс сестра вкус(xjjdog), публичная учетная запись, которая не позволяет программистам идти в обход. Сосредоточьтесь на инфраструктуре и Linux. Десять лет архитектуры, десятки миллиардов ежедневного трафика, обсуждение с вами мира высокой параллелизма, дающие вам другой вкус.