Maven: у моего проекта есть зависимость, которой нет в репозитории maven (системная область). Включено ли это в мою последнюю банку? - PullRequest
1 голос
/ 05 октября 2011

Так что мой проект maven зависит от jar, которого нет ни в одном хранилище maven.Поэтому мне нужно использовать системную область, чтобы включить этот локальный файл в мой maven classpath.Вопрос в том, что: когда я собираю свой последний jar-файл для распространения своей библиотеки, мне нужно как-то включить эту зависимость в нее.Классы могут быть извлечены и затем связаны с моими библиотечными классами ИЛИ банку можно как-то включить в мою библиотечную банку.Я даже не уверен, что последнее (jar внутри jar) возможно в Java.

Так как же мне подойти к этой проблеме?Примет ли Maven мою зависимость от объема системы и позаботится об этом для меня?Что мне делать?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 05 октября 2011

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

Или стандартный подход: тогда вы опубликуете свой артефакт, создадите общедоступный репозиторий для развертывания. Вы также можете развернуть банку в нем.

UDPATE: добавление примера для плагина затенения (вместо сборки)

  <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.4</version>
        <executions>
          <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <artifactSet>
                        <includes>
                          <include>legacy-jar.groupId:legacyJar</include>
                        </includes>
                  </artifactSet>
                </configuration>
          </execution>
        </executions>
  </plugin>
0 голосов
/ 05 октября 2011

Есть второй вариант.Поместите банку в свой репозиторий, как описано здесь:

http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

и в свой онлайн-репозиторий

http://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html

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

Это зависит от того, какая у вас библиотека.Таким образом, у вас не будет проблем с конфликтами версий вашего legacy.jar в среде вашего клиента.

0 голосов
/ 05 октября 2011

Может ли это быть тем, что вы ищете, http://maven.40175.n5.nabble.com/How-to-specify-local-dependency-in-maven2-td103415.html.

...