Как получить Maven для загрузки зависимости javax.comm?

Мне нужна библиотека 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 до них).

Ответ 1

Если вы посмотрите здесь, в "официальном" репозитории 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), которые недоступны для прямой загрузки, по существу из-за определенных лицензий...

Ответ 2

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

Загрузите 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

На самом деле 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]    

Ответ 4

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

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

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

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 из первой ссылки и загруженной банки в эту папку. Но это будет работать только для вашей локальной машины.

Ответ 5

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