Не завидуйте мандаринкам или бессмертным, а строчку кода корректируйте долго. Оригинал: 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. Десять лет архитектуры, десятки миллиардов ежедневного трафика, обсуждение с вами мира высокой параллелизма, дающие вам другой вкус.