IDEA должна иметь возможность инкрементной компиляции, но я этого не вижу. Я не вижу вариантов включить это. Запуск или запуск отладки приложения занимает почти полминуты. Должно ли это занять так много времени? Теоретически в IDEA уже созданы все файлы классов, за исключением исходных файлов, которые были только что отредактированы. IDEA должна быть в состоянии заполнить несколько пробелов и запустить приложение практически мгновенно. В чем задержка, почему он настаивает на том, чтобы заново скомпилировать каждый исходный файл?
ps. Я использую компилятор Eclipse в IDEA, так что он допускает невозможность компиляции некоторых исходных файлов. Мне приходится это делать, потому что это одно гигантское дерево Java-файлов, и я не могу контролировать каждый из них.
Потом я увидел, что, возможно, в Gradle есть инкрементальная компиляция. Поэтому я решил воссоздать свой проект, на этот раз с помощью Gradle. Мне очень сложно понять, как это работает, как интегрируется, какие задачи переносятся из IDEA в Gradle (если таковые имеются). Даже создание простого скелетного тестового приложения с помощью Gradle в IDEA очень разочаровывает. Повсюду встречаются всевозможные нечеткие детали, которые заставляют гадать. Учебники по Jetbrains практически бесполезны. Я не могу найти ни одного четкого объяснения, которое бы в двух словах объясняло, как это работает. Я вижу несколько демонстраций, в которых говорится: нажмите здесь, здесь и там, но результаты на моей стороне не такие, как я вижу.
Например , Gradle жалуется, что не может найти jar-файл junit. Хорошо, я захожу в настройки проекта и пытаюсь добавить jar-файл junit в путь к классам. В разделе «Библиотеки» я вижу запись «Gradle: junit:junit:4.11». Но есть и второй: «Юнит-4.11». Почему два? Могу ли я удалить один? Почему тот такой словесный, двоеточие это двоеточие это и т. д.
Поэтому я добавляю файлы jar junit, которые у меня есть, к обоим.
Но затем в окне «Проекты Gradle», где я вижу иерархическую разбивку файлов Настройка проекта gradle, проверка->тест. Предполагается, что это запустит тестовый класс, который мне удалось создать.
Код: Выделить всё
FAILURE: Build failed with an exception.
* What went wrong:
Could not resolve all dependencies for configuration ':testCompileClasspath'.
> Could not resolve junit:junit:4.11.
Required by:
xpert_client4:xpert_client4:1.0-SNAPSHOT
> No cached version of junit:junit:4.11 available for offline mode.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Gradle крайне разочаровывает. Если все, что мне нужно, это запустить main() в большом проекте, зачем мне сталкиваться с этими трудностями при использовании этой системы Gradle, которая предлагает вещи, которые мне не нужны? Почему это так запутанно, нечетко и запутанно?
То же самое касается и проекта Android. IDEA прекрасно может скомпилировать и запустить приложение для Android без Gradle. Просто избегайте использования Gradle при настройке, и это просто сработает.
Кроме того, есть все, что нужно сделать, чтобы ускорить предположительно медленную систему Gradle. Есть демоническая штука. Распараллелить, и видимо можно задать двумя способами (почему). Настройте по требованию. Глобализируйте. Минимизировать. minSdkVersion. Оффлайн (о нет, это не та штука Maven, которая снова и снова извлекает jar-файлы из Интернета). jЦентр. Профиль.... это продолжается и продолжается. Все эти обходные пути, хаки, корректировки, настройки.
Можно ли что-нибудь получить от постепенной модификации работающего проекта IDEA? Ускорится ли сборка и запуск, если я столкнусь со всеми этими проблемами? Могу ли я вообще и навсегда отказаться от Gradle (в надежде, что он каким-то образом не станет обязательным).
Я занимаюсь программированием с 80-х годов. Я использовал всевозможные системы. Я создаю свои собственные системы сборки. Я здесь не зеленый. Я также ненавижу RTFM, если эти FM не доходят до сути и плохо объясняют вещи - как будто те, кто это написал, сами этого не понимают - они знают, какие кнопки нажать, чтобы получить это собирается, и все.
Я считаю эту штуку одной из самых разочаровывающих вещей, которые я видел за долгое время. Предыдущая ужасная система сборки, которую я пробовал в прошлом и с тех пор избегал как чумы, — это Maven. Отсутствие ясного мышления в этих системах поразительно.
Итак, помимо этих разочарований, меня интересует следующий вопрос: стоит ли разбираться в Gradle и применять все обходные пути и настройки, чтобы я мог, пережив это горе, наслаждаться более быстрым временем сборки и запуска моего приложения?
Или мне было бы лучше избегать Gradle вообще, и вместо этого сделайте что-то вроде включения запуска моего приложения в цикл, чтобы каждый раз, когда я выхожу из приложения, оно повторно запускало main(). Затем я бы использовал DCEVM для написания кода на лету, пока это возможно.
Наконец, я забыл упомянуть. Включение автоматической сборки в IDEA работает очень плохо. Кажется, что сборка всегда включает в себя пересборку каждого отдельного файла снова и снова. И если установить автоматический режим сборки, все, что в конечном итоге будет сделано, — это снова и снова повторять это в фоновом режиме. Ничего не происходит асинхронно, когда я заканчиваю редактирование исходного файла и начинаю отладку приложения, где IDEA заранее выполнила любую сборку в фоновом режиме, потому что после этого она повторяет все это снова. каждое крошечное изменение кода. Кроме того, из-за этого процессоры постоянно загружаются почти до 100%.
IDEA — отличная IDE, но вся эта компиляция — сплошной кошмар, от начала до конца.
Подробнее здесь: https://stackoverflow.com/questions/404 ... ot-helping