Создание библиотек Java, которые зависят от других библиотекJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Создание библиотек Java, которые зависят от других библиотек

Сообщение Anonymous »

Я пытаюсь создать библиотеку Java (jar) для использования в веб-приложении, но у меня немного возникают проблемы с зависимостями.

Скажем, если бы я этого захотел:

Код: Выделить всё

import org.apache.commons.lang3.StringUtils;

public class Shout {

public static void main(String[] args) {
new Shout().shout();
}

public void shout() {
StringUtils.upperCase("help!");
}

}
представляется как Shot.jar.

Вышеупомянутое зависит от StringUtils, но мне не нужен apache-commons .jar упакован в мой Shout.jar. Вместо этого я хотел бы найти способ (если это вообще возможно), чтобы Gradle или Maven автоматически определяли, какие зависимости необходимы Shot.jar в веб-приложении, которое будет использовать Shout.jar.

Я пытался создать библиотеку с помощью Gradle (применив плагин java-библиотеки) и с помощью Maven (с плагином jar), но все равно, когда я поместил свой Shot.jar в качестве зависимости Gradle - он не разрешил StringUtils ...

Нужно ли мне что-то конкретное сделать на стороне jar, чтобы Gradle и Maven были довольны разрешением зависимости моего jar?
ОБНОВИТЬ с более подробной информацией

Извините за некоторую расплывчатость. Я попробую еще раз с более подробной информацией.

Итак, допустим, у меня есть класс Shout в проекте maven. То же самое, что и выше:

Код: Выделить всё

import org.apache.commons.lang3.StringUtils;

public class Shout {

public static void main(String[] args) {
new Shout().shout();
}

public void shout() {
StringUtils.upperCase("help!");
}

}
У него есть pom-файл с этим битом внутри (теги проекта опущены):

Код: Выделить всё

michal
shout
1.0-SNAPSHOT




org.apache.commons
commons-lang3
3.6



Теперь, если я запущу плагин jar для Maven, у меня будет хороший jar-файл с именем Shot-1.0-SNAPSHOT.jar.

Если я создам еще один проект под названием usingShout, на этот раз Gradle с конфигурацией Gradle:

Код: Выделить всё

group 'michal'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
flatDir {
dirs 'libs'
}

}

dependencies {
compile group: 'michal', name: 'shout', version: '1.0-SNAPSHOT'
}
И я поместил свой красивый jar-файл в каталог lib, например:

(кстати, pom.xml то же самое, что и выше)

И я пытаюсь сделать:

Код: Выделить всё

public class UsingShout {

public static void main(String[] args) {
new UsingShout().go();
}

private void go() {
new Shout().shout();
}

}
Я получаю:

Код: Выделить всё

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
Прошу прощения, если я не очень хорошо объясняюсь.

Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/469 ... -libraries
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»