Создание файла библиотеки Java с помощью IntelliJ IDEA

Я пытаюсь создать библиотеку, которая могла бы использоваться в других проектах. Я написал один класс с несколькими статическими методами, чтобы сделать некоторые вещи. Я хотел попробовать, но я не могу использовать импортированный файл JAR.

я скомпилировал свой код как артефакт и взял файл JAR из папки "out", а затем скопировал его в другой проект. После этого я пошел в "структуру проекта", вкладку" библиотеки "и нажал кнопку "Плюс". Я нашел файл JAR и выбрал его после этого IDEA попросила меня указать зависимости, но когда я хочу использовать его в коде, я не могу этого сделать. Его даже нельзя импортировать.

Class from library not recognized

любые идеи, почему он игнорирует мою библиотеку? Спасибо!

что мне делать, чтобы создать библиотеку JAR с идеей IntelliJ, которая может использоваться в других проектах?

2 ответов


вы столкнулись с очень распространенной проблемой управления зависимостями.

IMO реальный ответ-использовать систему сборки, такую как Maven, Ant или Gradle (я бы пошел Gradle сам). То, что вы пытаетесь сделать, является ручным, трудным для воспроизведения и хрупким.

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

чтобы пойти все с лучшими практиками, вы должны были бы иметь реальный создайте систему, которая публикуется на сервере непрерывной интеграции, который компилирует и выполняет тесты. После успешного завершения тестов банки публикуются на сервере артефактов (Nexus / Artifactory).

люди, с которыми Вы делитесь, будут потреблять банки через систему сборки, объявляя зависимости от вашей банки.


Я понял, в чем моя проблема. Когда я создавал библиотеку, я пытался упростить ее. Слишком просто, к сожалению. У меня был пакет с классом, который был скомпилирован в банку. Структура, показанная ниже:

foo
 |
 |_ MyLib.java 

однако для использования классов из созданной библиотеки JAR они должны быть помещены в пакеты. Это означает, если у меня есть:

foo
 |
 |_bar
 |  |
 |  |_MyInnerLib.java
 |
 |_MyOuterLib.java

Я могу импортировать и использовать методы из MyInnerLib, но MyOuterLib недоступен и не импортируется. Это было ошибка, которую я совершал.