Где хранятся файлы intellij idea
Я новичок в JavaFX 8 и IntelliJ IDE. У меня есть проект JavaFX8, который работает, но не так, как мне хотелось бы. Я хотел бы попробовать другой подход, но существенные изменения могут не сработать. Я не хочу потерять код, который у меня уже есть.
Чтобы сохранить код, над которым я работал, я создал проект new , а затем локально скопировал все папки ( .idea , out , src ) и файлы, кроме .iml рабочего проекта в соответствующие папки в новом проекте с вновь созданным .iml .
Кажется, что это всегда работает, но правильная ли это процедура?
Я не в команде разработчиков и еще не изучил Git / GitHub.
Пожалуйста, порекомендуйте. Спасибо.
2 ответа
Это правильная процедура? Вероятно, это не то, как большинство людей будет стремиться к достижению того, чего вы хотите достичь, но это определенно осуществимо. Если вы хотите придерживаться этого для простоты, я бы скопировал всю структуру каталогов, удалил файлы .idea и .iml, а затем создал новый проект в IntelliJ на этой чистой копии: IntelliJ автоматически настроит структуру папок на основе на существующем источнике без необходимости выполнять дополнительную ручную настройку.
Если вы готовы поэкспериментировать с маршрутом git, достичь основ того, чего вы хотите, не очень сложно, и я написал небольшое краткое руководство ниже. IntelliJ предлагает очень хорошую поддержку Git, и после создания вашего репозитория вы можете делать все, что вам нужно, из среды IDE. Я предполагаю, что вы работаете в Windows, хотя на других платформах эти шаги не должны сильно удаляться.
Откройте git bash и перейдите в каталог, содержащий ваш исходный код. Вместо того, чтобы видеть отдельные диски, как это делает Windows, Git Bash предполагает, что существует логический «корневой» каталог, в котором доступны все ваши файлы. Ваш диск C: будет / c. Для перемещения вы можете использовать cd для изменения каталога (используя / вместо) и ls для вывода списка файлов вместо использования dir .
Предполагая, что ваш исходный код находится в C: \ projects \ myproject:
Вторая строка выше создает в этом каталоге репозиторий git. Это не влияет на ваш код, это просто создает папку с именем .git , которая содержит всю бухгалтерскую информацию.
Есть небольшое количество основных команд:
Запуск git status сообщит вам, какие файлы были изменены, какие не находятся под контролем версий и какие файлы были добавлены в промежуточную область для фиксации в следующий раз.
Это добавляет файл в промежуточную область, ожидающий фиксации. Вы можете добавить несколько файлов в область подготовки, прежде чем зафиксировать их за один раз.
Если вы войдете в каталог своего проекта, выполните git status и просмотрите список, чтобы убедиться, что нет ничего, что вы не хотели бы иметь под контролем версий, тогда вы можете сделать git add . , чтобы добавить все в область подготовки и git commit -m "Check in initial version of the source code" для фиксации в репозитории.
После того, как вы совершили, вы можете запустить
Чтобы увидеть историю всех изменений. IntelliJ имеет представление, которое покажет вам то же самое.
Вот где сияет git; если вы хотите попробовать что-то экспериментальное, вы можете создать ветку своего проекта, разрешив git сохранить исходную версию.
Создадим и перейдем в ветку под названием эксперимент1. В этой ветке вы можете удалять, переименовывать, перемещать, переписывать и развивать все, что вам нравится. Изменения, которые вы фиксируете, не будут зависеть от вашей исходной рабочей версии.
Вы можете вернуться к исходной версии (с сохранением всех изменений, внесенных в эту ветку), используя:
Где master - это просто имя ветки по умолчанию, созданной при запуске git init . Экспериментальная версия по-прежнему будет там, и ее можно будет снова переключить с помощью git checkout experiment1 или из IntelliJ, используя выбор ветки в правом нижнем углу строки состояния.
Если вы решите, что изменения, которые вы сделали в эксперименте1, должны стать вашей новой «хорошей» версией, вы можете объединить их обратно в основную ветку и повторить цикл оттуда.
Возможно, вам стоит узнать, как использовать систему контроля версий, такую как Git, тогда вы можете создать репозиторий проекта и иметь разные ветки для вещей, которые вы хотите попробовать.
Сохранение рабочего кода в основной ветке предотвратит потерю рабочего кода. Кроме того, при использовании vcs вы всегда можете вернуться к версиям вашего кода, которые работали.
IntelliJ Idea IDE идеально поддерживает работу со всеми типами систем контроля версий.
Если вы не хотите изучать какие-либо формы vcs, то другого способа «сделать резервную копию» вашего рабочего кода нет.
In IntelliJ IDEA, projects help you to organize your source code, tests, libraries that you use, build instructions, and your personal settings in a single unit.
A project in IntelliJ IDEA is a shell that keeps modules together, provides dependencies between them, and stores their shared configuration. For more information on projects and modules, see Configure projects.
workspace.xml
Здесь содержится информация о вашем рабочем пространстве в Android Studio. Например, последняя позиция курсора на открытом вами файле. Так что это определенно пользовательская информация, которую нет необходимости хранить в git.
caches
Кэши, как следует из названия, могут быть безопасно добавлены в .gitignore .
Не вижу никаких оснований держать его в VCS, но по умолчанию эта папка в .gitignore не добавлена.
codeStyles
В этой папке содержатся настройки стилей кода проекта. Его полезно версионировать, если вы меняли стили кода по умолчанию.
assetWizardSettings.xml
Этот файл хранит последнюю иконку, добавленную с помощью интерфейса Android Studio. Его можно безопасно удалить из VCS.
vcs.xml
Этот файл содержит информацию о VCS, которую вы используете в своём проекте. Он используется для того, чтобы вы могли использовать графический интерфейс для выполнения операций, связанных с управлением версиями. Его тоже стоит добавить в git.
runConfigurations.xml
Имя файла может вам намекнуть, что в нём хранятся конфигурации, которые вы можете добавить, нажав «Изменить конфигурации». Этот файл обязательно нужно хранить в VCS.
Итоги
Я бы предложил вам добавить всего три строки к файлу .gitignore по умолчанию:
Как я уже сказал в начале этой статьи, я не нашёл никакой документации о содержимом папки .idea , поэтому статья может быть неполной и/или не точна на 100%. Если вы знаете ещё что-то, чего нет в этой статье, то пишите об этом в комменнтарии.
Они хранятся во временных файлах? Если да, то где они?
Попытки:
1) Я нажал правой кнопкой мыши> Копировать ссылку и вставил ее:
2) Я открыл .idea \ workspace.xml , и у меня есть следующая часть для временных файлов:
Для обычного файла путь входа начинается с file:// вместо scratchpad:// .
Я обновил свою IntelliJ IDEA до 14.1 и нашел рабочие файлы.
Если вы создаете рабочий файл, путь к нему можно найти разными способами:
В строке заголовка
Щелкните вкладку правой кнопкой мыши> Копировать ссылку .
Вы можете вставить его куда угодно, и он будет выглядеть так:
Щелкните правой кнопкой мыши вкладку> Переименовать файл .
Щелкните правой кнопкой мыши вкладку> Локальная история> Показать историю
В .idea \ workspace.xml это выглядит так:
Для macOS это расположение обоих
- консоли баз данных (все аккуратные маленькие вспомогательные скрипты db)
- файлы царапин (хранящиеся в виде простых файлов, царапина, созданная вами в приложении идеи под именем scratch.py , вы найдете в этом каталоге как scratch.py )
Чтобы перенести царапины, вам просто нужно скопировать эти каталоги в новую среду по указанному выше пути.
Однако учтите, что это работает для IntelliJ версии 2020.1 в macOS. Я не на 100% уверен, где более ранние версии использовались для хранения царапин и в других операционных системах.
Вот еще одно решение, если вы не можете найти свои рабочие файлы на вкладке Scratches , как предлагает @fnt (обычно это наиболее удобный способ).
В моем случае я недавно обновил свой редактор с PhpStorm 2018.1 до PhpStorm 2018.2. Рабочие файлы сохраняются вместе со всеми настройками по пути, специфичному для каждой версии вашего редактора. В случае MacOS это ~/Library/Preferences/PhpStorm2018.2 .
Это означает, что когда вы обновляете свою среду IDE, она начинает использовать новый путь и больше не видит ваши старые царапины. Если вам все еще нужно их открыть, просто перейдите по пути, специфичному для вашей ОС, и все ваши царапины будут там.
Вы можете переключиться в режим просмотра проекта, и вы сможете увидеть их в разделе «Царапины и консоли».
Начиная с версии 14.1, Scratch Files хранятся в .IntellijIdea14/config/scratches .
Они отображаются либо в Царапинах и консолях , либо на вкладке Царапины (в зависимости от используемой версии).
modules.xml
Этот файл содержит пути к .iml -файлам ваших модулей. Поэтому по аналогии с gradle.xml его нельзя хранить в git.
gradle.xml
Рекомендую удалить этот файл из git. Он может содержать локальный путь к вашей версии gradle, а также путь к вашему модулю. Например, вы можете разработать модуль в отдельном репозитории, поэтому путь к модулю может быть специфичным для каждого пользователя.
По всем этим причинам я окончательно удаляю файл gradle.xml из VCS.
File-based format
The file-based format was the only one available in older versions of IntelliJ IDEA; now it is outdated. Projects in this format contain several files: the .ipr , .iws , and .iml files. Generally, we don't recommend using this format unless you need to open projects in different file managers by clicking the .ipr file, or unless you need to store multiple projects in one directory.
caches/build_file_checksums.ser
По факту, этот файл представляет собой сериализированный экземпляр ProjectBuildFilesChecksums.
Файл необходим, чтобы проверить, изменились ли build.gradle , settings.gradle , local.properties , ~/.gradle/gradle.properties , gradle.properties или файлы build.gradle ваших модулей.
Android Studio использует этот файл для того, чтобы сообщить вам о том, что нужно синхронизировать gradle-файлы.
Project formats
In IntelliJ IDEA, there are two types of formats in which a project's configuration can be stored — the file-based format and the directory-based format.
inspectionProfiles
Эта папка содержит конкретные Lint-правила для вашего проекта. Поэтому так же, как и папка dictionaries , она должна храниться в git.
dictionaries
Папка содержит запись, которую вы добавили в словарь для проверки кода. Этот словарь важен, если у вас есть строгие правила в вашей CI-системе.
Change the project format to directory-based
Open the project using the .ipr file: from the main menu, select File | Open and select the .ipr in the folder with the project that you want to convert.
When the project has opened, from the main menu, select File | Manage IDE Settings | Save as Directory-Based Format .
В IntelliJ IDEA проект инкапсулирует все исходные коды, библиотеки, сценарии сборки в едином организационном блоке. Абсолютно все действия в IDEA происходят в контексте проекта. Проект может содержать коллекции модулей и библиотек. В зависимости от логических или функциональных требований, можно создать одномодульный или многомодульный проект.
Модули
Модуль – это отдельная сущность функциональности, которая может быть запущена, протестирована и отлажена независимо.
Модули включают такие вещи как исходные коды, сценарии сборки, юнит-тесты, и т.д. Каждый модуль в проекте может использовать определенный SDK, либо наследовать SDK проекта. Модули могут зависеть от других модулей в проекте.
Библиотеки
- библиотека модуля – видна только в данном модуле, информация о ней сохраняется в *.iml-файл;
- библиотека проекта – видна внутри всего проекта, информация о ней сохраняется в *.ipr-файл;
- глобальная библиотека – информация о ней сохраняется в файле applicationLibraries.xml, видимость которого распространяется на все проекты.
Каждый проект использует Software Development Kit (SDK). Для Java проектов существует специальный тип SDK, называемый JDK (Java Development Kit). SDK определяет какой API используется при сборке проекта. В многомодульном проекте, по-умолчанию, SDK наследуется всеми модулями, но также возможно определить отдельные SDK для соответствующих модулей.
Facet
Facet – это функциональность, ассоциированная с модулем, сообщающая как взаимодействовать с содержимым модуля. Модуль может иметь несколько Facets.
В IntelliJ IDEA Ultimate Edition имеется настройка в параметрах проекта, позволяющая назначать Facets, в отличие от Community Edition, где назначение Facet доступно лишь из API.
Строение проекта
С точки зрения разработчика плагина, структура проекта выглядит так, как показано на рисунке ниже.
Проект содержит один или несколько модулей. Каждый модуль включает исходный код плагина и вызывает упорядоченный набор сущностей, связанных с SDK и библиотеками. Модуль может иметь набор Facets.
Работа с файлами проектов, модулями, библиотеками
- интерфейс Project;
- абстрактный класс ProjectRootManager;
- абстрактный класс ProjectManager;
- интерфейс ProjectFileIndex.
- абстрактный класс ModuleManager;
- интерфейс Module;
- абстрактный класс ModuleRootManager;
- интерфейс ModuleRootModel;
- класс ModuleUtil;
- интерфейс ModifiableModuleModel;
- интерфейс ModifiableRootModel.
Виртуальная файловая система IntelliJ IDEA
- предоставление универсального API для работы с файлами независимо от их физического местоположения (на диске, в архиве, на FTP-сервере и т.д.);
- отслеживание изменений в файлах и предоставление как старой, так и новой версии их содержимого;
- предоставление возможности указать дополнительную информацию для файла внутри VFS.
Снапшоты работают на уровне приложения, поэтому даже при множественных ссылках из различных проектов, данные сохраняются в единственном экземпляре.
Все операции по доступу проходят через снапшот, если запрошенная информация недоступна, то она подгружается с диска. Содержимое файлов и список файлов в директории сохраняются, только если запрошена специфическая информация, в остальных случаях сохраняется только метаинформация (имя, размер и т.д.).
Все операции по записи – синхронны, т.е. данные записываются на диск немедленно.
IntelliJ IDEA выполняет асинхронную операцию полного обновления содержимого при запуске. Также, по-умолчанию, обновление происходит при переключении из другого приложения, но это поведение можно настроить на вкладке «Settings | Synchronize files».
Операция синхронизации основана на временных метках, если дата модификации не изменилась, то IDEA не обновляет содержимое файла. По возможности IntelliJ IDEA использует встроенные в операционную систему наблюдатели за файлами (inotify, epoll и т.д.).
События виртуальной файловой системы
Не стоит забывать, что обработчики работают на уровне приложения, следовательно, получают события ото всех открытых пользователем проектов. Поэтому в первую очередь стоит отфильтровать только релевантные активному проекту события.
При обновлении создаются события только для файлов, загруженных в снапшот. Поэтому если одиночный файл был загружен через VirtualFile.findChild(), то изменения, происходящие с ним будут отслеживаться, а с соседними по директории – нет.
Как и для многих разработчиков, папка .idea в Android Studio для меня всегда была, как черный ящик: я знал, что она существует, я знал, что её всегда добавляют в .gitignore, но я решил узнать, для чего же там нужны те или иные файлы и папки, чтобы у меня была возможность обрабатывать иногда возникающие git-конфликты, и для того, чтобы точно знать, какой файл можно безопасно добавить в .gitignore, а какой нет.
Разобрал я это на примере проекта, над которым работаю. И решил поделиться результатом того, что выяснил, т.к. не нашел никакой документации по этому вопросу.
указывает путь, который следует добавить в .gitignore
указывает путь, который Android Studio уже добавила в .gitignore , и вам не следует его версионировать.
указывает путь, который вы должны хранить в git.
misc.xml
Файл содержит информацию о проекте: версия Java, тип проекта и др.
Эти сведения касаются проекта и не зависят от пользователя. Поэтому его следует хранить в git.
libraries
Здесь содержится файл, который указывает, где хранятся jar-файлы ваших библиотек. Поскольку путь загрузки может быть специфичным для каждого пользователя, вы не должны хранить эту папку в VCS.
Directory-based format
For the directory-based format, the IDE creates the .iml file and the .idea directory that keeps project settings. It's the default format for projects in IntelliJ IDEA at this moment.
This format was introduced after the file-based format. Its main advantage is that it's adjusted to store project files in Version Control Systems: the project data is split over multiple files, and merge conflicts are less likely. For more information on how to share projects in different formats, refer to How to manage projects under Version Control Systems
On macOS and Linux, the .idea directory is hidden by default. To display the directory, allow showing hidden files in your system settings.
navEditor.xml
Здесь хранится расположение ваших элементов в редакторе навигации. Если эта информация имеет отношение к вашему проекту, то стоит сохранить этот файл в git. В противном случае смело добавляйте его в .gitignore , чтобы избежать конфликтов в будущем.
Читайте также: