Создание файла библиотеки Java с помощью IntelliJ IDEA
Я пытаюсь создать библиотеку, которая могла бы использоваться в других проектах. Я написал один класс с несколькими статическими методами, чтобы сделать некоторые вещи. Я хотел попробовать, но я не могу использовать импортированный файл JAR.
я скомпилировал свой код как артефакт и взял файл JAR из папки "out", а затем скопировал его в другой проект. После этого я пошел в "структуру проекта", вкладку" библиотеки "и нажал кнопку "Плюс". Я нашел файл JAR и выбрал его после этого IDEA попросила меня указать зависимости, но когда я хочу использовать его в коде, я не могу этого сделать. Его даже нельзя импортировать.
любые идеи, почему он игнорирует мою библиотеку? Спасибо!
что мне делать, чтобы создать библиотеку JAR с идеей IntelliJ, которая может использоваться в других проектах?
2 ответов
вы столкнулись с очень распространенной проблемой управления зависимостями.
IMO реальный ответ-использовать систему сборки, такую как Maven, Ant или Gradle (я бы пошел Gradle сам). То, что вы пытаетесь сделать, является ручным, трудным для воспроизведения и хрупким.
каждый раз, когда вы вносите изменения, вам придется пройти ручные шаги, чтобы создать новую банку. И ты действительно не понимаешь зависимостей.
чтобы пойти все с лучшими практиками, вы должны были бы иметь реальный создайте систему, которая публикуется на сервере непрерывной интеграции, который компилирует и выполняет тесты. После успешного завершения тестов банки публикуются на сервере артефактов (Nexus / Artifactory).
люди, с которыми Вы делитесь, будут потреблять банки через систему сборки, объявляя зависимости от вашей банки.
Я понял, в чем моя проблема. Когда я создавал библиотеку, я пытался упростить ее. Слишком просто, к сожалению. У меня был пакет с классом, который был скомпилирован в банку. Структура, показанная ниже:
foo
|
|_ MyLib.java
однако для использования классов из созданной библиотеки JAR они должны быть помещены в пакеты. Это означает, если у меня есть:
foo
|
|_bar
| |
| |_MyInnerLib.java
|
|_MyOuterLib.java
Я могу импортировать и использовать методы из MyInnerLib, но MyOuterLib недоступен и не импортируется. Это было ошибка, которую я совершал.