Как мне заставить Maven загрузить зависимость javax.comm? - PullRequest
10 голосов
/ 15 марта 2011

Мне нужна библиотека javax.comm при сборке моего проекта на нашем сервере сборки Hudson с Maven. В моих проектах pom.xml у меня есть такая зависимость:

<dependency>
    <groupId>javax.comm</groupId>
    <artifactId>comm</artifactId>
    <version>2.0.3</version>
</dependency>

Я также где-то читал, что мне больше повезет с javax lib, если я включу репозиторий:

    <repository>
        <id>java.net repository</id>
        <url>http://download.java.net/maven/2</url>
    </repository>

что я и сделал. Остальная часть моего pom.xml довольно стандартная и минималистичная.

Когда я пытаюсь собрать на сервере сборки, я получаю:

Downloading: [company repo]/content/groups/public//javax/comm/comm/2.0.3/comm-2.0.3.jar
[INFO] Unable to find resource 'javax.comm:comm:jar:2.0.3' in repository java.net repository (http://download.java.net/maven/2)
Downloading: [company repo]/content/groups/public//javax/comm/comm/2.0.3/comm-2.0.3.jar
[INFO] Unable to find resource 'javax.comm:comm:jar:2.0.3' in repository central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

Missing:
----------
1) javax.comm:comm:jar:2.0.3

Try downloading the file manually from: 
  http://www.sun.com/download/products.xml?id=43208d3d

Then, install it using the command: 
  mvn install:install-file -DgroupId=javax.comm -DartifactId=comm -Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file

Alternatively, if you host your own repository you can deploy the file there: 
  mvn deploy:deploy-file -DgroupId=javax.comm -DartifactId=comm -Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

Path to dependency: 
1) com.siriusit.fisherysolution.inmcsim:InmCSim:jar:1.0-SNAPSHOT
2) javax.comm:comm:jar:2.0.3

----------

Что я делаю не так?

-edit-

В итоге я скачал java comm lib из Oracle , и наш администратор Maven установил его в нашем локальном репозитории. Как указано в ответах ниже, библиотека java comm lib недоступна в общедоступных репозиториях из-за лицензионных ограничений Oracle (и Sun до них).

Ответы [ 5 ]

10 голосов
/ 15 марта 2011

Если вы посмотрите здесь , в "официальном" репозитории Maven 2 вы увидите это в файле pom.xml для вашей библиотеки:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>javax.comm</groupId>
    <artifactId>comm</artifactId>
    <version>2.0.3</version>
    <name>Java Communications API</name>
    <description>
        The Java Communications API is a Java extension that facilitates developing platform-independent
        communications applications for technologies such as Smart Cards, embedded systems, and point-of-sale
        devices, financial services devices, fax, modems, display terminals, and robotic equipment.
    </description>
    <url>http://java.sun.com/products/javacomm/</url>
    <distributionManagement>
        <downloadUrl>http://www.sun.com/download/products.xml?id=43208d3d</downloadUrl>
    </distributionManagement>
    <dependencies></dependencies>
</project>

, что означаетвам следует загрузить библиотеку самостоятельно (URL-адрес указан в теге <downloadUrl>), а затем установить ее в локальном хранилище (или, что еще лучше, развернуть в своем корпоративном хранилище).

Это иногда случается с некоторыми библиотеками (другой пример - драйвер JDBC Oracle), которые недоступны для прямой загрузки, в основном из-за определенных лицензий ...

4 голосов
/ 15 марта 2011

Баночка недоступна в общедоступных репозиториях, вероятно, по причинам лицензирования.

Загрузите Communication API и разверните его, используя

mvn deploy:deploy-file -DgroupId=javax.comm -DartifactId=comm \
   -Dversion=2.0.3  -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] \
   -DrepositoryId=[id]
3 голосов
/ 15 марта 2011

На самом деле Maven не находит его в публичных репозиториях ...

[INFO] Невозможно найти ресурс 'javax.comm: comm: jar: 2.0.3' в репозитории java.net репозиторий (http://download.java.net/maven/2) ... [INFO] Невозможно найти ресурс 'javax.comm: comm: jar: 2.0.3' в центральном хранилище (http://repo1.maven.org/maven2)

Вы должны загрузить его из любого источника и либо установить в локальном хранилище:

mvn install:install-file -DgroupId=javax.comm -DartifactId=comm -Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file

или разверните его в хранилище вашей компании (если оно есть):

mvn deploy:deploy-file -DgroupId=javax.comm -DartifactId=comm -Dversion=2.0.3 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]    
1 голос
/ 15 марта 2011

Из-за лицензионных ограничений пакет javax.comm недоступен ни в каких общедоступных репозиториях, для получения дополнительной информации см. Здесь:

http://repo1.maven.org/maven2/javax/comm/comm/2.0.3/comm-2.0.3.pom

POM также предлагает вам ссылку для скачивания. Вы должны скачать банку, используя предоставленную ссылку:

http://www.sun.com/download/products.xml?id=43208d3d

и поместите его в "/javax/comm/comm/2.0.3/" на сервере хранилища вашей компании, серверы, такие как artifactory, предлагают для этого веб-интерфейс.

Если у вас нет сервера репозитория, вы можете поместить его в каталог .m2/repository в вашей домашней папке. Создайте там каталог "/javax/comm/comm/2.0.3/" и поместите pom из первой ссылки и скачанный jar в эту папку. Но это будет работать только для вашей локальной машины.

0 голосов
/ 25 апреля 2013

Вы также можете добавить артефакт в систему контроля версий и использовать maven-install-plugin для локальной установки перед сборкой, как объяснено здесь .

...