Добавить Jar и Classifier в качестве зависимости от проекта Maven

У меня есть локальный файл Jar, который я хочу добавить в качестве зависимости для проекта Maven, над которым я работаю.

Это легко сделать, как указано в ответе это.

Проблема в том, что для правильной работы этого файла Jar требуется файл foo.classifier.

Этот файл Jar предназначен для запуска из командной строки (java -jar bar.jar {argument}). Файлы Jar и классификатора находятся в одном каталоге, поэтому все работает нормально.

Однако из моего проекта я хочу вызвать файл Jar, используя его методы, а не запуская процесс.

Я добавил файл Jar в качестве зависимости, и мне удалось вызвать основной метод, который получает аргумент, однако он не работает должным образом из-за того, что foo.classifier файл не установлен в качестве зависимости для работы этого файла Jar.

Кто-нибудь знает, как я могу установить его как зависимость от этого файла Jar?

Как вы используете файлы foo.classifier в jar. Чтение из пути к классам или физического пути?

Vikas Yadav 25.02.2019 14:50

Можете ли вы отредактировать исходники и создать файл bar.jar самостоятельно?

Daniele 25.02.2019 14:52

Я не был тем, кто кодировал файл Jar, поэтому я не знаю, как он используется. Я только знаю, что файлы jar и classifier должны находиться в одном каталоге. Также не могу редактировать исходники.

João Alves 25.02.2019 14:56

У вас есть исходники и вы можете прочитать исходники основного метода?

J Fabian Meier 25.02.2019 15:07
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
504
3

Ответы 3

Поместите файлы foo.classifier в точную папку в папке .m2\repository, где присутствует ваш локальный файл Jar, который вы добавили в качестве зависимости, поскольку jar зависимостей будет ссылаться из локального репозитория.

Это звучит хрупко для меня.

J Fabian Meier 25.02.2019 15:31

Это похоже на то, что jar и файлы находятся в одном каталоге.

Vikas Yadav 25.02.2019 15:33

Но локальные репозитории часто удаляются, создаются заново и т.д.

J Fabian Meier 25.02.2019 20:43

Вы можете поместить свою банку в каталог libs и добавить приведенный ниже код в свой файл пом.xml:


<dependency> <groupId>htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.21-OSGi</version>`` <scope>system</scope> <systemPath>the full path of the jar</systemPath> </dependency>

по возможности следует избегать системы масштаба.

J Fabian Meier 25.02.2019 15:31

Я не могу не подчеркнуть это достаточно сильно, что сказал Дж. Ф. Мейер.

khmarbaise 25.02.2019 18:42

Да, Дж. Ф. Мейер прав, и я просто говорю о способе использования локальных файлов jar с Maven.

bp zhang 26.03.2019 10:52

Добавьте банку в репозиторий maven с помощью следующей командной строки, укажите идентификатор группы, идентификатор артефакта и версию.

mvn install:install-file -Dfile = "my-local.jar" -DgroupId = "my.groupid" -DartifactId = "name" -Dversion = "1.0.0" -Dpackaging=jar

а затем добавьте как зависимость к вашему pom

<dependency>
    <groupId>my.groupid</groupId>
    <artifactId>name</artifactId>
    <version>1.0.0</version>
</dependency>

Другие вопросы по теме