2015-04-30 9 views
0

Я использую Maven и имею внешнюю библиотеку (сажу). Я хочу добавить эту библиотеку в свой проект с Maven, а затем упаковать в 1 uber jar. (example).Как добавить внешнюю библиотеку баннеров с Maven, с возможностью последующей полной (с внешней банкой внутри) упаковки?

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

Но вместе это не работает, потому что на первом этапе зависимость имеет область видимости, и эта зависимость не будет добавлена ​​в uber jar.

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

Возможно ли достичь моей первоначальной цели?

+0

какой объем? вы пробовали https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html? – sodik

+0

mvn install прекрасно работает, но мне нужно сделать это на каждом компьютере – watson94

+0

и в какой области вы используете? он должен работать нормально – sodik

ответ

0

Возможно, самое простое решение для использования вами в локальном репозитории (компании?), Таком как Artifactory.

Однако, если это невозможно, вы можете использовать локальный репозиторий в проекте (как от вашего example) и сохранить его в своем vcs.

<repository> 
    <id>in-project</id> 
    <name>In Project Repo</name> 
    <url>file://${project.basedir}/libs</url> 
</repository> 

Единственная хитрость заключается в том, чтобы получить артефакты (банки) в этом локальном хранилище:

mvn deploy:deploy-file -Dfile=fooLib.jar -DgroupId=com.test -DartifactId=fooLib -Dversion=1.0.1 -Dpackaging=jar -Durl=file://pathTo/libRepo -DrepositoryId=in-project 

И вы просто использовать его как любой другой зависимости

<dependency> 
     <groupId>com.test</groupId> 
     <artifactId>fooLib</artifactId> 
     <version>1.0.1</version> 
</dependency> 

Определенно не используйте systemscope, так как ожидается, что такие зависимости будут найдены в системе и поэтому не будут объединены с JAR.