13

在使用 Maven 在我们的 Hudson 构建服务器上构建我的项目时,我需要 javax.comm 库。在我的项目 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

----------

我究竟做错了什么?

-编辑-

我最终从Oracle下载了 java comm 库,并让我们的 Maven 管理员将它安装在我们的本地存储库中。正如下面的答案所指出的,由于 Oracle(以及之前的 Sun)的许可限制,公共存储库中不提供 java comm lib。

4

5 回答 5

12

如果您在这里查看pom.xml,在“官方”Maven 2 存储库中,您将在您的库的文件中看到:

<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>标签中给出),然后将其安装在本地存储库中(或者更好的是,将其部署在您的企业存储库中)。

这种情况有时会发生在某些无法直接下载的库(Oracle JDBC 驱动程序是另一个示例)中,主要是因为特定的许可证......

于 2011-03-15T10:51:50.667 回答
4

该 jar 在公共存储库中不可用,可能是出于许可原因。

下载通信 API并使用

mvn deploy:deploy-file -DgroupId=javax.comm -DartifactId=comm \
   -Dversion=2.0.3  -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] \
   -DrepositoryId=[id]
于 2011-03-15T10:56:16.923 回答
3

实际上maven在公共回购中没有找到它......

[信息] 无法在存储库 java.net 存储库 (http://download.java.net/maven/2) 中找到资源 'javax.comm:comm:jar:2.0.3' ... [信息] 无法找到存储库中心 (http://repo1.maven.org/maven2) 中的资源“javax.comm:comm:jar:2.0.3”

您必须从任何来源下载它并将其安装在本地存储库中:

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]    
于 2011-03-15T10:52:24.380 回答
1

由于许可限制,javax.comm 包在任何公共存储库中均不可用,请参阅此处以获取更多详细信息:

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

POM 还为您提供下载 url。您应该使用提供的链接下载 jar:

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

并将其放在/javax/comm/comm/2.0.3/您公司存储库服务器中的“”中,像 artifactory 这样的服务器为此提供了 Web 前端。

如果您没有存储库服务器,则可以将其放在您.m2/repository的主文件夹中的目录中。在此处创建一个目录“ /javax/comm/comm/2.0.3/”,并将第一个链接中的 pom 和下载的 jar 放在此文件夹中。但这仅适用于您的本地计算机。

于 2011-03-15T10:54:19.553 回答
0

您还可以在源代码控制中添加工件,并使用 maven-install-plugin 在构建之前将其安装在本地,如此所述。

于 2013-04-25T19:10:00.987 回答