2013-06-23 2 views
1

У меня есть некоторые локальные файлы jar из проекта, отличного от maven, который я хочу включить в мой проект eclipse на основе maven.Вставить локальные файлы jar в maven project

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

Конечно, файлы jar должны быть встроены в результирующую банку развертывания. Мы сделали это до использования Ant, который позволяет указать, что эти файлы jar должны быть включены.

Как вы делаете то же самое в maven? Учтите, что у нас также есть зависимости от maven, которые все работают нормально и не требуются при развертывании. Некоторые ответы, которые я видел, не позволяют этого требования.

Вот одна из моих попыток - проблема в том, что банки не внедриться:

<dependency> 
    <groupId>se.krka.kahlua</groupId> 
    <artifactId>kahlua-core</artifactId> 
    <version>5.1_2.1.0</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/lib/kahlua-5.1_2.1.0-core.jar</systemPath> 
</dependency> 
+0

Возможно, путь для maven [assembly plugin] (http://maven.apache.org/plugins/maven-assembly-plugin/). –

+0

См. Http://stackoverflow.com/questions/364114/can-i-add-jars-to-maven-2-build-classpath-without-installing-them – prasopes

+0

Как вы строите эти банки? С Ant? Рассмотрите возможность автоматического добавления их в общий/корпоративный репозиторий как SNAPSHOT (если таковой имеется). Это сэкономит вам много времени, особенно учитывая, что они «претерпевают большие изменения». – adrianboimvaser

ответ

2

Системные дорожки - очень плохая идея. Когда кто-то еще проверяет ваши проекты, он больше не может его строить. (Я всегда вижу такое дерьмо во многих компаниях). Правильным решением было бы установить банку в местное хранилище:

$ МВН установки: установка-файл -Dfile = [JAR NAME] -DgroupId = [GROUPID OF JAR] -DartifactId = [артефакта фляги] -Dversion = [версия JAR] -Dpackaging = баночки

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

<dependency> 
    <groupId>[GROUPID OF JAR]</groupId> 
    <artifactId>[ARTIFACT OF JAR]</artifactId> 
    <version>[VERSION OF JAR]</version> 
</dependency> 
+0

Что-то случилось вокруг части установки. Я делал это из меню «Конфигурации построения затмения», и, похоже, все прошло хорошо, но maven жалуется, что при компиляции он не может найти «se.krka.kahlua: kahlua-core: jar: 5.1_2.1.0». Я посмотрел, и пока каталоги были созданы, в локальном репозитории нет файлов jar. Это должно произойти, или я делаю это неправильно? – CJxD

+0

@CJxD Я не уверен, что Eclipse делает это правильно. Попробуйте выполнить команду в консоли. Я уверен, что тогда это сработает. – Bevor

+0

Это все еще не работает = [Я искушаюсь просто отказаться от использования и снова использовать Ant – CJxD

1

Вы можете использовать Maven-установки-плагин для установки Калуа-5.1_2.1.0-core.jar в локальный репозиторий, то эта зависимость будет вести себя как любая другая, см. http://maven.apache.org/plugins/maven-install-plugin/usage.html. Или сделайте удаленный репозиторий в месте, совместно используемом вашим приятелем, и пусть он загрузит свою банку с помощью maven-deploy-plugin: deploy-file (http://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html) каждый раз, когда он меняет его и добавляет этот репозиторий к вашему pom. Вы можете использовать версию SNAPSHOT, если эта банда часто изменяется.

+0

Можете ли вы показать, как это делается, пожалуйста? – CJxD

+0

см. Http://maven.apache.org/plugins/maven-install-plugin/usage.ht –