Включить библиотеки Java в свою библиотеку - PullRequest
0 голосов
/ 16 декабря 2011

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

Мне это нужно для упрощения обновления внешних библиотек.

Так что я поместил это в свой build.xml, который добавляет все библиотеки из dist / lib в мой собственный jar-файл.

<target name="-post-jar">  
    <!-- Include all java libraries -->
    <fileset dir="dist/lib" id="extern.libs">
        <include name="*.jar" />
    </fileset>

    <!-- Add the libraries from the fileset to the project.jar -->
    <jar jarfile="${dist.jar}" update="true">  
        <zipgroupfileset refid="extern.libs"/>
    </jar>  
</target>  

Но когда я пытаюсь использовать внешние библиотеки, такие как "org.zkoss.zk.ui.Component", я получаю сообщение об ошибке, что эта библиотека не найдена.

Есть ли лучший способ включить внешние библиотеки в мою собственную библиотеку, чтобы мой проект мог их использовать?

Ответы [ 4 ]

2 голосов
/ 16 декабря 2011

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

Если вы хотите создатьартефакт "все в одном", рассмотрим что-то вроде OneJar или jarjar или плагин Maven's Shade , чтобы создать банку, которая не имеет внешних зависимостей.

1 голос
/ 16 декабря 2011

Вы можете использовать Один сосуд или Жирный сосуд .Если вы используете maven, вы можете использовать плагин maven-assembly.

1 голос
/ 16 декабря 2011

Стандартный загрузчик классов не может найти файлы классов в банке, которая находится внутри банки.Вы должны добавлять каждый jar в classpath, а не jest.

Кстати, возможно, было бы плохой идеей разрешить вложение jar: у вас получилось бы 6 или семь версий commons-lang или log4j вкаждый проект, потому что от них зависит много библиотек.

0 голосов
/ 16 декабря 2011

Зависит от IDE ... Если вы используете Eclipse, то это очень просто ... перейдите в Свойства-> Путь сборки и затем добавьте библиотеку ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...