【问题标题】:How do I get Maven to download javax.comm dependency?如何让 Maven 下载 javax.comm 依赖项?
【发布时间】:2025-12-28 17:10:11
【问题描述】:

在使用 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。

【问题讨论】:

  • 您的公司 repo 似乎没有携带 javax.comm:comm:jar:2.0.3,或者它无法将请求转发给这样做的人..?
  • 为什么 Maven 在我的公司 repo 中找不到它,却无法在 public repos 中找到它?
  • 因为它没有配置为在那里查看。这是公司的标准配置,能够监控/控制正在使用的内容(许可问题是这里关注的主要原因)。您应该请人将其添加到公司回购中,否则您可能会遇到法律部门的麻烦。
  • 感谢大家的帮助。
  • 啊!似乎 javax.comm 2.0.3 在任何地方都不可用。甲骨文已将其完全掩埋或无法找到。因此,所有这些答案,无论它们曾经拥有的任何优点都不再有效。谁能告诉我在哪里可以通过任何方式获得 java comm.jar v2.0.3 的副本?

标签: maven javax.comm


【解决方案1】:

如果您在“官方”Maven 2 存储库中查看here,您将在您的库的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 在&lt;downloadUrl&gt; 标记中给出),然后install it on your local repository(或者更好的是,将其部署在您的企业存储库中)。

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

【讨论】:

    【解决方案2】:

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

    下载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 并没有在公开的 repos 上找到它...

      [INFO] 无法在存储库 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]    
      

      【讨论】:

        【解决方案4】:

        由于许可限制,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 放在这个文件夹中。但这仅适用于您的本地计算机。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            最近更新 更多